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

通过命令行向jar文件添加外部依赖项

东门佐
2023-03-14
/usr/lib/jvm/java-8-jdk/bin/java -classpath /usr/local/bin/kiaragen.jar:/home/kiara/AppLab/KIARA/kiaragen/src/main/resources/org/fiware/kiara/generator/idl/templates/*:/usr/lib/jvm/java-8-jdk/jre/lib/*:/home/kiara/AppLab/KIARA/kiaragen/lib/*  org.fiware.kiara.generator.kiaragen

其中/usr/local/bin/kiaragen.jar是要执行的文件。现在,我尝试运行一个依赖于a.class文件的不同版本:

/home/kiara/AppLab/KIARA/IDL-Parser/target/classes/com/eprosima/idl/parser/exception/ParseException.class

将文件添加到类路径:

/usr/lib/jvm/java-8-jdk/bin/java -classpath /usr/local/bin/kiaragen-0.2.0.jar:/home/kiara/AppLab/KIARA/IDL-Parser/target/classes/com/eprosima/idl/parser/exception/ParseException.class:/home/kiara/AppLab/KIARA/kiaragen/src/main/resources/org/fiware/kiara/generator/idl/templates/*:/usr/lib/jvm/java-8-jdk/jre/lib/*:/home/kiara/AppLab/KIARA/kiaragen/lib/*  org.fiware.kiara.generator.kiaragen

提供以下异常:

Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.NoClassDefFoundError: com/eprosima/idl/parser/exception/ParseException
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
    at java.lang.Class.privateGetMethodRecursive(Class.java:3048)
    at java.lang.Class.getMethod0(Class.java:3018)
    at java.lang.Class.getMethod(Class.java:1784)
    at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544)
    at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526)
Caused by: java.lang.ClassNotFoundException: com.eprosima.idl.parser.exception.ParseException
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 7 more
$ cat META-INF/MANIFEST.MF 
Manifest-Version: 1.0
Main-Class: org.fiware.kiara.generator.kiaragen

如何将.class文件添加到类路径?

共有1个答案

方寒
2023-03-14

您不明白类路径是什么。类路径是jar文件和目录的集合,Java在其中查找类(以及类加载器加载的其他资源)。

如果程序使用类com.foo.bar,那么类路径中必须包含的不是文件/someDirectory/com/foo/bar.class。类路径中必须有目录/someDirectory。或者包含该类的jar文件。

然后,类加载器将从该基目录或jar文件中查找与类名对应的文件:

com.foo.Bar --> com/foo/Bar.class
 类似资料:
  • 我刚刚开始使用servlet和JSP开发在线应用程序。您可能知道,我们需要一个doPost方法,它接收HttpServletRequest请求、HttpServletResponse(Response)参数。 我的问题如下。我知道我需要导入javax.servlet和javax.servlet.http.*包才能使其工作。我记得有一次,一个疯狂的老师告诉我,我可以修改我的jdk/jre/lib文件

  • 直到最近,我还只是在使用一个简单的Java项目。我最近决定将其升级为使用gradle包装器和NetBeans12,但现在该程序无法检测beep3.wav文件。 我看过这个、这个和很多其他的页面,但是没有一个关于向jar添加文件的信息,所以我假设我正在寻找错误的信息。 你能帮个忙吗?我只需要获得wav文件,以便在构建项目时自动插入到jar中。

  • 本文向大家介绍gradle 添加本地JAR文件依赖性,包括了gradle 添加本地JAR文件依赖性的使用技巧和注意事项,需要的朋友参考一下 示例 单罐 有时您需要添加本地JAR文件作为对Gradle构建的依赖。这是您可以执行的操作: path文件系统上的目录路径在哪里,是local_dependency.jar本地JAR文件的名称。该path可以相对于构建文件。 JAR目录 也可以添加一个jar目

  • 我试图弄清楚什么是最好的方法来设置Spring Boot应用程序,使其具有自己的jar依赖项,但当它作为java-jar命令运行时,将额外的jar添加到类路径中。哪种方法更有意义 > 使用原始jar(不添加依赖项)并将所有jar(应用程序和运行时)放置在文件系统的文件夹中,并使用PropertiesLauncher指定jar文件夹的loader.path。 使用fat jar(与应用程序jar一起

  • 我有2个项目: 项目A在src/main/resources中有folder/file.ext。构建时,它存在于a.jar中。 项目B引用了代码中的某个位置的folder/file.ext。 我不能改变项目A或B或它们的构建方式。 从命令行运行project B时: 我正在获得一个FileNotFoundException。 我想知道,是否有一种方法可以使它工作,使folder/file.ext对

  • 我需要通过gradle build将mail-1.4.7 jar文件包含到我的intellij idea项目库中。我将编译存储库名称添加到我的构建中。gradle文件如下: 编译“javax”。邮件:邮件:1.4.7' 然后我运行了我的构建,虽然在构建过程中没有错误,但我无法在我的项目库中看到jar。我在考虑通过gradle构建,jar将被自动管理。不确定我是否需要尝试其他东西。我还尝试运行gra