Let's compile some project, then try to invoke javafxpackager -createjar on it.
It works if we specify files by srcdir option:
[dginzburg@workplace ~/work/packagerTestsSuite/apps/HelloWorld]$ javafxpackager -createjar -srcdir build/classes/ -outfile dist/HelloWorld.jar -appclass helloworld.HelloWorld
[dginzburg@workplace ~/work/packagerTestsSuite/apps/HelloWorld]$ java -jar dist/HelloWorld.jar
Hello World initialized!
JavaRuntimeVersion:1.7.0_21-b08
PASS
Then let's try to specify all files in out build dir:
[dginzburg@workplace ~/work/packagerTestsSuite/apps/HelloWorld]$ echo `cd build/classes && find . -name *.class`
./helloworld/HelloWorld$1.class ./helloworld/HelloWorld$2.class ./helloworld/MyPreloader.class ./helloworld/HelloWorld.class
[dginzburg@workplace ~/work/packagerTestsSuite/apps/HelloWorld]$ javafxpackager -createjar -srcdir build/classes -srcfiles `cd build/classes && find . -name *.class` -outfile dist/HelloWorld.jar -appclass helloworld.HelloWorld
[dginzburg@workplace ~/work/packagerTestsSuite/apps/HelloWorld]$ java -jar dist/HelloWorld.jar
java.lang.ClassNotFoundException: helloworld.HelloWorld
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:266)
at com.javafx.main.Main.getAppClass(Main.java:506)
at com.javafx.main.Main.launchApp(Main.java:622)
at com.javafx.main.Main.main(Main.java:805)
[dginzburg@workplace ~/work/packagerTestsSuite/apps/HelloWorld]$ unzip -l dist/HelloWorld.jar
Archive: dist/HelloWorld.jar
Length Date Time Name
--------- ---------- ----- ----
0 2013-04-01 16:13 META-INF/
158 2013-04-01 16:13 META-INF/MANIFEST.MF
0 2013-04-01 16:13 helloworld/
808 2013-04-01 16:13 helloworld/HelloWorld$1.class
0 2013-04-01 16:13 com/
0 2013-04-01 16:13 com/javafx/
0 2013-04-01 16:13 com/javafx/main/
1747 2013-04-01 16:13 com/javafx/main/Main$2.class
19218 2013-04-01 16:13 com/javafx/main/Main.class
5633 2013-04-01 16:13 com/javafx/main/NoJavaFXFallback.class
2671 2013-04-01 16:13 com/javafx/main/Main$1.class
--------- -------
30235 11 files
We can see, that jar is created incorrectly and can't start.
Also, we can see, that only HelloWorld$1.class from HelloWorld*.class is saved in *.jar but there's 3 of them.
I attach this project to show this issue: to firstly compile it you should do this:
ant -f simple-build-cli.xml compile
It works if we specify files by srcdir option:
[dginzburg@workplace ~/work/packagerTestsSuite/apps/HelloWorld]$ javafxpackager -createjar -srcdir build/classes/ -outfile dist/HelloWorld.jar -appclass helloworld.HelloWorld
[dginzburg@workplace ~/work/packagerTestsSuite/apps/HelloWorld]$ java -jar dist/HelloWorld.jar
Hello World initialized!
JavaRuntimeVersion:1.7.0_21-b08
PASS
Then let's try to specify all files in out build dir:
[dginzburg@workplace ~/work/packagerTestsSuite/apps/HelloWorld]$ echo `cd build/classes && find . -name *.class`
./helloworld/HelloWorld$1.class ./helloworld/HelloWorld$2.class ./helloworld/MyPreloader.class ./helloworld/HelloWorld.class
[dginzburg@workplace ~/work/packagerTestsSuite/apps/HelloWorld]$ javafxpackager -createjar -srcdir build/classes -srcfiles `cd build/classes && find . -name *.class` -outfile dist/HelloWorld.jar -appclass helloworld.HelloWorld
[dginzburg@workplace ~/work/packagerTestsSuite/apps/HelloWorld]$ java -jar dist/HelloWorld.jar
java.lang.ClassNotFoundException: helloworld.HelloWorld
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:266)
at com.javafx.main.Main.getAppClass(Main.java:506)
at com.javafx.main.Main.launchApp(Main.java:622)
at com.javafx.main.Main.main(Main.java:805)
[dginzburg@workplace ~/work/packagerTestsSuite/apps/HelloWorld]$ unzip -l dist/HelloWorld.jar
Archive: dist/HelloWorld.jar
Length Date Time Name
--------- ---------- ----- ----
0 2013-04-01 16:13 META-INF/
158 2013-04-01 16:13 META-INF/MANIFEST.MF
0 2013-04-01 16:13 helloworld/
808 2013-04-01 16:13 helloworld/HelloWorld$1.class
0 2013-04-01 16:13 com/
0 2013-04-01 16:13 com/javafx/
0 2013-04-01 16:13 com/javafx/main/
1747 2013-04-01 16:13 com/javafx/main/Main$2.class
19218 2013-04-01 16:13 com/javafx/main/Main.class
5633 2013-04-01 16:13 com/javafx/main/NoJavaFXFallback.class
2671 2013-04-01 16:13 com/javafx/main/Main$1.class
--------- -------
30235 11 files
We can see, that jar is created incorrectly and can't start.
Also, we can see, that only HelloWorld$1.class from HelloWorld*.class is saved in *.jar but there's 3 of them.
I attach this project to show this issue: to firstly compile it you should do this:
ant -f simple-build-cli.xml compile