2011-03-10 236 views
2

考虑从主方法启动的Java程序,它需要tools.jar中的某些内容。在这种情况下,用于连接到JMX服务的一些实用程序代码。我们有什么选择,只能将其包装在使用-cp管理类路径的shell脚本中吗?我们宁愿使用MANIFEST.MF类路径。tools.jar依赖关系

回答

1

http://java.sun.com/developer/Books/javaprogramming/JAR/basics/manifest.html

the URLs in the Class-Path header are given relative to the URL of the JAR file of the applet or application. 

我不相信你有一个有关使用shell包装得到您的类路径中的tools.jar选择。除非您在内部编写一些自定义类加载器以允许您查找外部罐。

+1

这个想法是,我放弃使用Class-Path清单,只是建立一个长的-cp参数,包括$ JAVA_HOME/lib/tools.jar。 – bmargulies 2011-03-10 22:37:19

+0

我以为我确认你的想法和怀疑。建立一个长期的 -cp参数似乎是做你想做的唯一好方法。你也可以创建一个java -jar启动器,使用系统管理器产生另一个“java -cp <许多类去这里> some.package.Main”。这将允许您跳过脚本,但会牺牲产卵或分叉新流程。 – 2011-03-10 23:32:45

+0

是的,当然,对不起。 – bmargulies 2011-03-11 00:19:26

0

如果从依赖关系jar中包含类是一个选项,我会创建一个“Runnable JAR文件”。基本上你从中提取类,并将它们放在JAR中的自己的类中。这消除了对包装脚本的需求。

做,在Eclipse中,选择您的项目,File - >Export - >Java - >Runnable JAR file;该选项将要求您至少执行了一次主类以知道在实际运行生成的JAR时要运行的配置文件。