当前位置: 首页 > 面试题库 >

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

穆宾白
2023-03-14
问题内容

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

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

java -jar mainprog.jar -classpath "/mylib" MyClass

但我得到了错误:

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)

我究竟做错了什么?


问题答案:

当您使用"-jar",然后 Class-Path定义的属性META- INF/MANIFEST.MF文件里面jar的文件会影响到类路径。

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

如果您只想从该jar中调用类,则可以这样调用它:

java -cp mainprog.jar:/mylib MyClass
// or using this one on windows:
java -cp mainprog.jar;/mylib MyClass


 类似资料:
  • 问题内容: 从命令行,如何设置Java CLASSPATH选项以指向包含多个jar文件的一个或多个目录?是否有通配符支持递归目录和子目录? (我的JAR文件在几个子目录中排序。) 问题答案: 如果您使用的是Java 6或更高版本,则可以使用以下形式的通配符: 如果要添加所有子目录:lib \ a \,lib \ b \,lib \ c \,则除了以下以外,没有其他机制: 您想要完成的工作没有类似或

  • 问题内容: 我正在运行Websphere Liberty 8.5。我的应用程序从文件系统中读取了通过Java CLASSPATH获得的一些文件,但我似乎找不到一种将目录从文件系统追加到读取的CLASSPATH的方法。我尝试过手动更改JAVA_CMD和JAVA_DEBUG,但是它们都不用。 有人知道这怎么可能吗? 问题答案: 不能修改JVM应用程序的类路径(通常通过JVM参数- classpath或

  • 我正在运行WebSphere Liberty 8.5。我的应用程序从文件系统中读取一些通过JavaCLASSPATH获取的文件,我似乎找不到将文件系统中的目录附加到CLASSPATH Liberty读取的目录中的方法。我尝试手动更改JAVA_CMD和JAVA_DEBUG,但都不起作用。 有人知道这怎么可能吗?

  • 问题内容: 我有一个独立的Java项目。我已经执行了Maven全新安装。现在,我通过命令提示符进入target \ classes文件夹,并在classpath中设置所有必需的文件。现在我执行主类。结果正在显示。 现在,我通过命令提示符移回目标文件夹,并尝试执行jar文件(jar文件具有在其中定义了主类的清单文件)。 现在,我得到以下异常。我也从上面的语句中删除了classpath属性,但仍然遇到

  • 问题内容: 我有很多jar文件要添加到我的类路径中,因此,每次编译Java文件时,都会得到如下命令: 我尝试使用: 然后: 但是根本没有添加jar:由于缺少jar,我得到了错误信息…谢谢 问题答案: 也许您想尝试使用Maven来构建您的应用程序?它真的很容易设置,并且消除了依赖管理的所有问题。 同样从Java 6开始,您可以在类路径中使用通配符: set CLASSPATH = my_libs \

  • 如何使用类路径加载csv文件?在此之前,我尝试使用FileReader加载文件,这在本地运行时工作正常,但是当部署到外部服务器时会引发像FileNotFound这样的异常。下面的代码在本地工作,但是当部署在tomcat文件夹www/[jar]上的jar抛出这个异常不幸的是,我无法提供原始代码。这是要点: