java - 运行 Java 程序链接到第三方库 (java -jar) 问题(尝试了多种方法)

标签 java classpath javac

此问题与运行依赖于第三方 jar 库的 Java 程序 (jar) 有关,即使在设置类路径并通过阅读 Internet 上的文章尝试了许多其他方法之后也是如此。

我想使用第三方 Pack1.jar(它不是 jvm 的一部分)作为我程序的依赖项。 我不知道 Pack1.jar 文件在部署机器中的什么位置,我希望部署者指定第三方库的路径

我已经尝试了以下替代方法,但没有成功

  1. 以编程方式设置 java.class.path

    String class_path = args[0];
    System.setProperty("java.class.path",class_path);
    

    这里我假设部署者会在运行程序时提供类路径作为第一个参数

  2. 设置 CLASSPATH env_var 以定位第三方目录

  3. 运行时,使用类路径选项

    java -classpath /path/to/Pack1.jar -jar Pack2.jar 
    

    我认为这行不通,因为文档说当使用“java -jar”运行程序时会忽略类路径

  4. 以编程方式设置 java.ext.dirs。

  5. 以编程方式设置 java.library.path。

我不想在 list 中指定类路径,因为它只采用相对路径,而且我不知道第三方库在部署机器中的位置

但我无法让 jar 运行。

请帮忙解决这个问题。

最佳答案

选择选项 3。像这样将两个 jar 放在类路径中:

java -classpath '/path/to/Pack1.jar:/path/to/Pack2.jar' com.packagename.yourclassname

请注意,这是针对 Linux 的。在 Windows 上,您将用分号分隔类路径元素:

java -classpath "/path/to/Pack1.jar;/path/to/Pack2.jar" com.packagename.yourclassname

http://en.wikipedia.org/wiki/Classpath_%28Java%29

关于java - 运行 Java 程序链接到第三方库 (java -jar) 问题(尝试了多种方法),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8080889/

相关文章:

java - 为什么 javac 提示与类的类型参数无关的泛型?

Java : Extract numbers from a string

java - Kafka 消息版本控制

Java 替换字符串中的 Unicode 字符

java - eclipse从哪个目录启动jvm?

java - Minecraft 将 .java 编译为 .class 非法字符和未封闭的字 rune 字

Java VNC 小程序

java - 读取一个文件一个jar

尽管使用 CLASSPATH 环境变量,但仍出现 java.lang.ClassNotFoundException

java - 错误 : Failed to run "javac -version", 确保您安装了 JDK