我在编译.java文件时生成了.class。我的程序的整个代码都在我的.java中。有了这个,从命令行我想创建一个.jar直接从命令行执行JAVA-jar。在我的程序中,我使用两个外部.jar文件,我在与其他文件相同的文件夹中,但我不知道如何将它们放在创建或执行.jar的过程中。我的脚本包含以下内容:
jar -cf CantidadAnio.jar CantidadAnio.class
@ECHO.
@ECHO.
jar cmf temp.mf CantidadAnio.jar CantidadAnio.class
JAVA-jar CantidadAnio.jar cantidadanio.csv
temp.mf: 主班:CantidadAnio 密封:真实
问题在于执行.jar,它无法识别在两个外部.jar中定义的类和方法
我还尝试从.java生成并运行.class,但在执行时它向我显示错误:"无法找到或加载主类CantidadAnio"
为此,我使用了脚本:
javac -cp "opencsv-3.9.jar;ChartDirector.jar" CantidadAnio.java
java -cp "opencsv-3.9.jar;ChartDirector.jar" CantidadAnio "cantidadanio.csv"
答案 0 :(得分:1)
将第三方JAR打包成一个自己的自定义JAR通常是个坏主意。阅读JAR清单,其中指出了java -jar
执行的类路径等。通常的方法是将第三方JAR与JAR打包在同一目录或lib/
子目录中,并使用Java Web Start / JNLP或ZIP文件来提供整个包。最后,您的部署可能如下所示:
deployment_directory/
|
|-- your.jar
|
|-- lib/
|
|-- third_party.jar
|
|-- other_third_party.jar
然后使用JAR中的Class-Path:
清单条目来告知其他JAR相对于部署目录的位置。
https://docs.oracle.com/javase/8/docs/technotes/tools/unix/javaws.html#BABHGIBB https://docs.oracle.com/javase/tutorial/deployment/deploymentInDepth/jnlp.html https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jar.html#BGBEJEEG http://docs.oracle.com/javase/tutorial/deployment/jar/index.html