java - 在不指定支持 jar 文件的情况下运行 jar 文件

标签 java jar executable-jar

我创建了一个新的 jar 文件。当我使用

运行 jar 时
java -jar UpdateAvailable.jar com.dao.mysql.UpdateAvailable

我得到以下异常。

Exception in thread "main" java.lang.NoClassDefFoundError: org/codehaus/jettison/json/JSONException
Caused by: java.lang.ClassNotFoundException: org.codehaus.jettison.json.JSONException
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)

但我复制了 UpdateAvailable.jar 中的所有支持 jar。现在我的要求是在不指定支持 jar 的情况下运行 jar 文件,比如

java -jar UpdateAvailable.jar com.dao.mysql.UpdateAvailable

最佳答案

在使用 JAR 文件和 ClassPath 时,请记住以下几点:-

  • 为了让您的 JVM 找到类,您的类路径应该设置为包含该类的目录。在这种情况下,您有 JAR。
  • 因此,您需要提供 Jar 文件名的路径
  • 现在,由于您在当前运行的 Jar 文件中有 Jar 文件,您无法将类路径设置到 Jar 中的文件夹,因此基本上您将无法为内部 Jar 文件设置类路径..
  • 因此,显然 JVM 将无法看到您内部 Jar 中的类..
  • 因此,请确保您所需的 JAR 文件不在所有 JAR 文件中(我的意思是说 - 避免嵌套 JAR 文件)。

关于java - 在不指定支持 jar 文件的情况下运行 jar 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12582943/

相关文章:

java - Gradle JavaFX - java.lang.NullPointerException : Location is required

java - 如何在事务期间将只读 hibernate session 转换为写入(主/从数据库)

java - 在运行时查找包中的所有类(并调用静态方法)

java - 如何在 hibernate 中更新多个表?

android - 如何使用Javadoc生成Android * .jar库?

Java 命令太长而无法运行

java - NoClassDefFoundError 和 ClassNotFoundException 的原因和区别是什么?

jar - Libgdx 导出独立桌面游戏而不必将所有 Assets 放在同一个文件夹中?

java - 无法使用 maven-assembly-plugin 设置类路径

java - 运行 java jar 时将整数数组作为参数