首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >设置Java类路径以加载类文件

设置Java类路径以加载类文件
EN

Stack Overflow用户
提问于 2010-01-25 21:21:49
回答 2查看 24.5K关注 0票数 7

我是Java新手,我不确定如何从单独的程序jar访问位于特定目录中的类文件。

例如,我在/中有一个第三方jar文件,它应该加载位于/mylib/MyClass.class中的MyClass,所以我尝试运行:

代码语言:javascript
复制
java -jar mainprog.jar -classpath "/mylib" MyClass

但是我得到了一个错误:

代码语言:javascript
复制
Exception in thread "main" java.lang.NoClassDefFoundError: MyClass
Caused by: java.lang.ClassNotFoundException: MyClass
        at java.net.URLClassLoader$1.run(URLClassLoader.java:221)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:209)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:324)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:269)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:337)

我做错了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-01-25 21:27:11

当您使用"-jar"时,只有在META-INF/MANIFEST.MF文件中定义的jar文件中的Class-Path属性会影响类路径。

它还将忽略MyClass参数(或者更具体地说:将其解释为MANIFEST.MF中定义的主类的参数)。

如果您只是想从jar中调用一个类,请像这样调用它:

代码语言:javascript
复制
java -cp mainprog.jar:/mylib MyClass
// or using this one on windows:
java -cp mainprog.jar;/mylib MyClass
票数 13
EN

Stack Overflow用户

发布于 2010-01-25 21:30:57

在命令行中,您试图将MyClass作为一个程序运行,但根据您的描述,这并不是您想要的。

您需要弄清楚用来执行jar中的程序的主类是什么。您可以使用jar -xf mainprog.jar解压jar文件并查看META-INF/MANIFEST.MF文件。它应该有一个条目,指明jar的主类是(我现在记不住条目的名称了)。

然后将您的命令行更改为如下所示:

代码语言:javascript
复制
java -classpath /mainprog.jar:/mylib package.name.to.jar.MainClass
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2132505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档