7

I’m using Maven to package my JavaFX project for distribution. Since JavaFX is licensed under LGPL, I need to allow users of my project to replace its DLLs by newer or compatible versions. But I don’t understand where the DLLs are placed in the resulting folder or how a user of my package can replace the DLLs. I use the terminal commands mvn clean compile and mvn package which creates a folder of jars at target/app but no DLLs are found, just library jars (program executes fine). I’ve added the DLL’s to maven’s local repo using mvn install:install-file -Dfile=C:\jacob-1.18-M2-x86.dll -DgroupId=jacob -DartifactId=jacob-dll -Dversion=4.2 -Dpackaging=dll -DgeneratePom=true

Why are no DLLs found, and how can users freely switch them for new versions, which is required for my program to fulfill the terms of LGPL?

migrated from programmers.stackexchange.com Sep 17 '16 at 12:39

This question came from our site for professionals, academics, and students working within the systems development life cycle.

  • 4
    LGPL has nothing to say about the location of your DLL's. – Robert Harvey Sep 16 '16 at 23:08
  • 1
    The answer here says "LGPL's basic requirement is to separate the LGPL-licensed library and your own product well enough ... use the LGPL code as a shared library (so the users would just copy their binary of the library over the one you ship)". But I don't understand WHERE the DLLs even are in my target/app folder, only jars exist. How can this satisfy the need to be "separated well enough"? How can a user replace a DLL that I can't even find? Please see my confusion, thanks. – JimJim Sep 17 '16 at 0:35
  • 4
    JavaFX is not LGPL. It is GPL "with classpath exception". You should read what the classpath exception language says to see how you should comply in your case. – Brandin Sep 17 '16 at 14:28
1

First JavaFX is not using the LGPL but partly under:

The net effects is that JavaFX as a whole is not open source. Instead this is using a proprietary "trialware" license (the Oracle BCL) with some UI parts under the GPL + classpath.

Per the FAQ:

At this time, the JavaFX UI Controls source code has been contributed to the OpenJFX open source project; other JavaFX components are expected to follow in multiple phases. The code is available under the GPL v2 with Classpath Exception license, similar to other projects in OpenJDK. The Oracle JavaFX runtime and SDK implementations will continue to be released under the Oracle Binary Code License for the Java SE Platform.

So what can you do?

  • if you can build everything in OpenJFX from sources and everything has been released by Oracle, you could build this and use these builds. I have not enough understanding of the JavaFX code nor what has been really released under OpenJFX to draw any conclusion. If everything is available under the GPL+classpath, you can read this answer to understand what would be your obligations under this license.
  • otherwise, you cannot use much of JavaFX beyond the limited rights granted by the Oracle BCL, and you likely will need to buy a commercial license from Oracle.

Additional answer elements:

It looks like after all there is a GPL+classpath version of the JavaFX runtime that has landed in mercurial. So what you could do is redistribute an OpenJDK and build yourself this JavaFX from sources as well as the libraries. If you rely on the pre-built binaries provided by Oracle as part of the BCL-licensed Java runtime, you are subject to the vagueness of the BCL and the fact this is not licensed for "function specific" usage.

The use of Software in systems and solutions that provide dedicated functionality (other than as mentioned above) or designed for use in embedded or function-specific software applications, for example but not limited to: ....

So if you opt for the BCL you will likely subject yourself to this kind of audit as Oracle can consider as function specific whatever it wants... And the word on the street and that it surely uses and abuses of this.

See this answer and this answer and this answer related to the BCL and Java and why it cannot be used for redistribution with free and open source software as well as commercially licensed software, unless you either get a truly open OpenJDK (eventually building it yourself) or you buy a commercial license from Oracle.

  • @Phillipe, can you please clarify... are you saying that I cannot use JavaFX to create commercial applications? I'm not trying to alter JavaFX's source code but simply use it to create JavaFX apps that I can sell to customers. The answer here says there is no difference between Java and JavaFX license now. – Mathomatic Jan 8 '17 at 19:53
  • 1
    I updated my answer. Whatever comments were made 6 years ago on tickets by developers has not much value. What matters is the license and what Oracle makes of it these days. If you still need convincing, you should get legal advice ;) – Philippe Ombredanne Jan 11 '17 at 15:00
  • 1
    Thanks Phillipe, your update was packed with information. It appears that using OpenJDK (GPL+Classpath exception) seems to be my only option if I want to (1) Avoid an audit and (2) Not pay for a commercial license. I'm left with a question though, I'm confused about your comment: what you could do is redistribute an OpenJDK and build yourself this JavaFX from sources as well as the libraries. What does "build yourself this JavaFX" mean? You've mentioned "building" a few times, what does that entail? Is it a very large, long process or is it a simple IDE menu selection? – Mathomatic Jan 11 '17 at 19:39
  • 1
    NOTE: One page 3 of the comments of this audit article you posted above, someone says you may want to learn that Red Hat has quite recently (coincidence?) started providing OpenJDK binaries for Windows: https://developers.redhat.com/products/openjdk/overview/ You can of course also build them yourself . Does this mean I don't even need to "build" JavaFX myself like you mentioned? I'm treading in murky territory, please clarify! – Mathomatic Jan 11 '17 at 20:52
  • 1
    It may be the case or not. You will have to research. If you find a bona fide build from the open source code then that's great for you. Azul and RedHat may provide it, or may they only build the OpenJDK and ignore JavaFX. TBD. Make sure in all case that you safe keep the corresponding source code for any of this pre-built binaries. – Philippe Ombredanne Jan 11 '17 at 21:48

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.