当我完成编写我的类时,我将它们放入一个包结构中,然后我就把它们全都震动了。
现在哪个是部署和使用我的jar的最好方法?
答案 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-Path
和Main-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将解决剩下的问题。