部署程序包的最佳方法

时间:2010-06-23 07:23:58

标签: java jar classpath package

当我完成编写我的类时,我将它们放入一个包结构中,然后我就把它们全都震动了。

现在哪个是部署和使用我的jar的最好方法?

  1. 设置classpath;
  2. 使用CLASSPATH变量;
  3. 使用扩展机制。

5 个答案:

答案 0 :(得分:1)

不要更新用户的CLASSPATH环境变量,因为存在部署的应用程序可能会干扰用户可能想要运行的其他Java应用程序的风险。

不要使用Extension机制进行部署,因为存在使用已“扩展”的JVM干扰任何用户运行的应用程序的风险。

最佳解决方案是创建和部署使用“-cp”参数的包装器脚本,或运行自启动JAR文件的快捷方式...,如其他答案所示。

答案 1 :(得分:0)

我最好的意见是提供批处理文件和shell脚本来启动应用程序。

复杂的脚本检查环境变量,如$ JAVA_HOME(%JAVA_HOME%)并使用它们,如果已定义或使用默认值。

在脚本中,您可以在内部变量中构建类路径,并使用类似

的行启动应用程序
%JAVA_HOME%\bin\java.exe -cp %LIBRARIES% com.example.Main

我希望这个解决方案优于java -jar Application.jar替代方案,因为这个方法要求您在jar清单中设置类路径。因此,部署依赖于目标系统上现有库的应用程序非常困难,因为您必须在构建应用程序之前了解库路径

答案 2 :(得分:0)

我在那个罐子里有一个主要的类,你想要运行最好的方法是在jar中放入一个META-INF / MANIFEST.MF文件并使用java -jar mypackage.jar启动你的课程

清单应包含Class-PathMain-Class属性

请参阅http://java.sun.com/j2se/1.3/docs/guide/jar/jar.html#JAR%20Manifest

答案 3 :(得分:0)

如果您想要在另一个应用程序中使用它来“部署和使用”,请将其设置在该应用程序的类路径上。

如果您使用扩展机制(我假设您的意思是将jar放在pathtojava / lib / ext中),那么使用该jvm的每个应用程序都将加载jar,CLASSPATH的相同计数作为系统变量。那很可能没必要?

如果您将jar作为独立应用程序执行/使用;只需运行命令行,不需要类路径。如果你想在服务器上部署,你可能想要改变战争或耳朵领域。

答案 4 :(得分:-1)

设置类路径(使用-cp)是最好的方法,因为每个应用程序都可以有不同的类路径。 CLASSPATH环境变量对于机器上运行的所有Java应用程序都是全局的,扩展机制也是如此,因此您可能不想使用它们。

如果您的代码是可执行的(即它具有public static void main(String[] args)方法),那么您还可以指定main方法所在的类,以及Jar文件中清单文件中的关联类路径。完成后,您可以这样做:

java -jar myJar.jar

Java将解决剩下的问题。