0

I created a small application which includes an external package called JavaFX. The package contains 4 jar file. When I create a jar from the command line to the current directory, the jar executes OK (importing classes from the 4 jars). But when I move that jar file from a different directory, the file wont execute. In other words the created jar can't seem to locate the classes in those jar files (JavaFX jars) ?

Below is the manifest file:

Main-Class: QuizMenu    
Class-Path:
 deploy.jar
 javaws.jar
 jfxrt.jar
 plugin.jar

The textfile does contain a space at the start and end of each line of the jars, and a final carriage return at the last line (Each line apart from the last line does not contain a carriage return). Also the Main-Class: header works OK. (Just the classpath doesn't seem to work).

Can anyone identify the problem with the file?

4

1 回答 1

0

推荐

您不应deploy.jar javaws.jar jfxrt.jar plugin.jar在 mainifest 文件中引用任何这些 ( ) jar 文件。


JavaFX 打包工具

相反,您应该使用 JavaFX 感知部署工具,例如:

  1. javafxpackager
  2. JavaFX 蚂蚁任务
  3. JavaFX Maven 插件
  4. JavaFX gradle 插件
  5. NetBeans JavaFX 项目
  6. 将来可能会出现的其他一些兼容工具。

上述工具将适当地打包您的应用程序以使用 JavaFX。


背景

如果您尝试将 JavaFX、Java 部署和 Java 插件 jar 文件与您的应用程序捆绑在一起,那么当您在不同的 Java 版本(例如 Java 8 或 9)上运行您的应用程序时,它可能无法在所有未来版本中像 JavaFX 一样正常运行将被定义为 Java 运行时平台的一部分,而不是作为单独安装的库或可以与独立于 Java 运行时其余部分的应用程序捆绑在一起的库。

此外,诸如 jfxrt.jar 之类的 jar 文件依赖于许多本机动态链接库(.so、.dll 等),这些库因平台而异,并具有 32 位和 64 位变体。jfxrt.jar 的版本必须与底层本机库的版本相匹配(并且适当平台的底层本机库必须对动态加载链接器可用)才能使 jfxrt.jar(例如 JavaFX)正常运行。

于 2013-03-22T19:53:48.470 回答