2013-03-22 154 views
0

我创建了一个包含名为JavaFX的外部程序包的小应用程序。该软件包包含4个jar文件。 当我从命令行创建一个jar到当前目录时,jar执行OK(从4个jar中导入类)。但是当我从另一个目录中移动该jar文件时,该文件将不会执行。换句话说,创建的jar似乎无法找到这些jar文件中的类(JavaFX jar)?Jar文件的清单类路径

下面是清单文件:

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

文本文件确实从包含在开始和一个空间的罐子的每一行的端部,和在最后一行的最终回车(每一行分开最后一行不包含回车符)。此外,Main-Class:标题的工作正常。 (只是类路径似乎不工作)。

任何人都可以识别文件的问题?

+0

即使移动后,jar文件是否与应用程序jar文件在同一个文件夹中? – 2013-03-22 18:48:45

+1

库文件的路径都是相对的,这些库需要与jar文件位于同一文件夹中。您可能要考虑使用maven或ant来将eveything打包在一起。 – 2013-03-22 18:49:44

+0

是的,他们在同一个文件夹中。如果我确实将这些包装罐与创建的罐子一起移动,那么罐子将会执行。 你是如何表示亲属?因为在外部罐子应该在一个单独的文件夹,并找到他们在类路径? – 2013-03-22 19:34:48

回答

0

建议

你不应该涉及任何这些(deploy.jar javaws.jar jfxrt.jar plugin.jar) jar文件在你的mainifest文件。


JavaFX的包装工具

相反,你应该使用JavaFX的认识deployment tools如:

  1. javafxpackager
  2. JavaFX ant tasks
  3. JavaFX maven plugin
  4. JavaFX gradle plugin
  5. NetBeans JavaFX project
  6. 其他兼容的工具可能会在未来出现。

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


背景

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

此外,诸如jfxrt.jar之类的jar文件依赖于众多的本地动态链接库(.so,.dll等),这些库因平台而异,并且具有32位和64位的变体。为了使jfxrt.jar(例如JavaFX)正常工作,jfxrt.jar的版本必须与底层本机库的版本(以及相应平台的底层本机库必须可供动态负载链接程序使用)匹配。

+0

好的非常感谢你的答复。我将研究这些链接,最好是NetBeans链接。 – 2013-03-22 20:13:18