使用.class和其他人构建.jar .jar

时间:2017-03-15 15:54:50

标签: java cmd jar

我在编译.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"

1 个答案:

答案 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