java - CLASSPATH 中的值的顺序重要吗?

标签 java classpath

我有 2 个 Java 程序,分别位于 一个在 c:\test 中,另一个在 c:\test\new 中

我可以编译它们而不会出现任何错误\javac

但是当我尝试执行文件\java 时 它显示这样的错误

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at ButtonFrame.makeButton(ButtonTest3.java:42)
    at ButtonFrame.<init>(ButtonTest3.java:29)
    at ButtonTest$1.run(ButtonTest.java:17)
    at java.awt.event.InvocationEvent.dispatch(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)

我把它放在我的类路径中

CLASSPATH value- C:\test;C:\test\new

但是如果我将 CLASSPATH 中的值的顺序更改为此

CLASSPATH value- C:\test\new;C:\test

错误消失了

为什么?这可能会发生 只有顺序才重要吗?

最佳答案

两个文件夹中都有一个同名的类。在 C:\test 中,有一个 ButtonTest3 类版本,其中包含导致此 NullPointerException 的编程错误。在 C:\test\new 中,有一个不同版本的 ButtonTest3 类,它不包含此错误,或者可能有一个 ButtonTest 类,它与 C:\test 中的类执行完全不同的操作。

清理你的类路径。在类路径中存在具有相同签名的重复的不同版本类是不好的。如果您的意图是 new 应该是包标识符,那么您需要将其远离类路径。但是,这样的包名会导致编译错误,所以不可能是这样。

<小时/>

对于该错误,NullPointerException 相对来说比较容易确定和修复。首先看堆栈跟踪的第一行:

at ButtonFrame.makeButton(ButtonTest3.java:42)

这表明它发生在 ButtonTest3 类的第 42 行,在 makeButton() 方法内。现在转到 ButtonTest3.java 的第 42 行,它看起来像:

someObject.doSomething();

查看哪里使用点运算符.来调用方法或访问某个对象的字段。 NullPointerException 意味着 someObject 在特定时刻为 null。没有实例!

这是一个简单的修复:只需确保在调用/访问它时它不是 null即可:

someObject = new SomeObject();
// ...
someObject.doSomething();

关于java - CLASSPATH 中的值的顺序重要吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3796211/

相关文章:

tomcat - 在 WAR 中打包 JAR 还是放在类路径中?

java - WEB-INF/lib 内容的 JBOSS 排序

java - 数据未保存在 ArrayList 中

java - 生成 keystore 但只获得 SHA1 证书,我想要 SHA256 证书?

javascript - 如何从 Java 代码触发 Google 跟踪代码管理器脚本

Java命令行程序类路径问题

JBoss 7.1.1 : add rt. jre 的 jar 到类路径

java - 是否可以将资源文件放入 JAR 文件中?

java - JEdi​​torPane 获取字符在行号和列号处的位置

java: 不兼容的类型: java.lang.String 无法转换为 double