当前位置: 首页 > 知识库问答 >
问题:

从命令行运行一个JAR文件并指定classpath

杨昆
2023-03-14

我已经编译了一个JAR文件,并在清单中指定了Main-Class(我使用了Eclipse导出函数)。我的依赖项都在一个标记为lib的目录中。在指定JAR文件应该使用lib/*作为类路径的同时,我似乎无法得到如何执行JAR文件的直接答案。

我试过:

]$ java -jar -cp .:lib/* MyJar.jar
]$ java -cp .:lib/* -jar MyJar.jar
]$ java -cp .:lib/* com.somepackage.subpackage.Main

等等。

每一个都给出一个错误:

错误:找不到或加载主类....

或者给出NoClassDefoundErr指示未找到库。

我甚至尝试重做JAR文件并包含lib目录和内容,但仍然没有任何结果。

我如何从命令行执行一个JAR文件并指定要使用的类路径?

共有1个答案

姜嘉荣
2023-03-14

指定-jar时,将忽略-cp参数。

从文档中可以看到:

当您使用此选项时,JAR文件是所有用户类的来源,其他用户类路径设置将被忽略。

您也不能将所需的jar文件“包含”到另一个jar文件中(您需要提取它们的内容并将.class文件放入您的jar文件中)

您有两种选择:

  1. lib目录中的所有jar文件包含到清单中(您可以在其中使用相对路径)
  2. 在命令行上使用-cp:
    Java-cp myjar.jar:lib/*com.somePackage.subpackage.main
  3. 指定所有内容(包括您的jar
 类似资料:
  • 问题内容: 我已经编译了一个JAR文件,并在清单中指定了Main-Class(我使用了Eclipse Export函数)。我的依赖项都在标有的目录中。在指定应将JAR文件用作类路径的同时,我似乎无法获得关于如何执行我的JAR文件的直接答案。 我试过了: 等等… 每个都给出一个错误说: 或NoClassDefFoundError指示未找到库。 我什至尝试重新制作JAR文件,并包括lib目录和内容,但

  • 问题内容: 我有以下目录层次结构: 在这里,SigarTest是程序包名称。根文件夹位于jdk的bin文件夹中。从那里,我运行以下命令来创建我的项目的jar文件- 其中tools.jar,mongo-2.7.3.jar和sigar.jar是必需的,并且与根目录(jdk的bin文件夹)位于同一文件夹中。但是,运行它,我得到 我究竟做错了什么 ? 问题答案: 使用 目录 选项 哪些 临时改变目录( D

  • 问题内容: 我正在尝试从JAR运行课程。此类不是此jar中唯一的主类。另外,它还需要其他数量的jar文件,这些文件与该Jar保存在同一目录中。我尝试过的命令如下: (使用Windows平台,mydir是我所有jar所在的目录) 是运行所需的,是我要运行的课程。 并且是由类所需的命令行参数 下面是我曾尝试: 这是错误: 有人可以告诉我我应该运行什么命令吗? 问题答案: 尝试: ” 提供您从与myPr

  • 问题内容: 我有一个包含以下代码的Java桌面应用程序: 当我通过执行“ java -jar name.jar”运行此应用程序的相应.jar文件时,check1和check2均被打印,并且应用程序正常运行。但是,当我尝试通过双击.jar文件运行jar时,我发现ToolProvider.getSystemJavaCompiler()返回null。不会打印“ check2”。我没有从editor.ru

  • 当我通过执行“java-jar name.jar”来运行这个应用程序的相应的。jar文件时,check1和check2都会被打印出来,app工作正常。但是当我试图通过双击。jar文件来运行jar时,我发现ToolProvider.getSystemJavaCompiler()返回null。“check2”不打印。我没有从compiler.run()中得到正确的结果。 我确实将注册表项“\hkey_

  • 我使用Java Jersey框架(与Maven一起使用),并使用IntelliJ作为IDE。我遇到过这个运行时异常,它只发生在尝试从命令行运行代码时(使用maven编译,然后使用Java-JAR),但在IntelliJ中运行时不会发生,这很奇怪。 我有一些Java代码,它将尝试使HTTP访问某个远程URL,并尝试将返回的JSON读入某个Lombok POJO: 正如我之前提到的,奇怪的是,只有当我