我使用的是Macbook Pro,Maverics OS,64位机器 实际上我在计算机上运行java程序时遇到了一个非常棘手的问题。
例如,这是我的代码:
package com.gui.helloworld;
import javax.swing.JOptionPane;
/**
* <p>Hello World popup</p>
* This class simply pops up a "Hello, World!"
* message graphically.
*
* @author Aditya R.Singh
* @version 1.0
* @since 2014-06-22
*/
public class GUIHelloWorld {
/**
* This is the method that will popup the
* "Hello, World!" message.
* @param args Unused
*/
public static void main(String[] args) {
JOptionPane.showMessageDialog(null, "Hello, World!");
}
}
当我编译这样的代码时,
javac com/gui/helloworld/GUIHelloWorld.java
生成GUIHelloWorld.class 到这个地方,很好。
但问题出在这里
当我尝试运行这样的代码时:
java com.gui.helloworld.GUIHelloWorld
它给我一个像
这样的错误Error: Could not find or load main class com.gui.helloworld.GUIHelloWorld
所以我必须像这样编译程序:
java -classpath . com.gui.helloworld.GUIHelloWorld
现在,输出出现。
那很好,但是,为什么还需要把这个&#34; classpath&#34;当.class文件在
时
同一目录?
我不喜欢这种风格
两个月前我习惯使用Windows 7机器时,这不是问题
有帮助吗?或者它是否有必要用于mac OS?
请帮忙。
提前谢谢;)
答案 0 :(得分:1)
没有classpath选项的javac或java将工作目录作为默认的类路径。
对类的引用必须包含包名。所以如果你编译并执行
javac One.java
java One
第一类应该在默认包中(没有包语句)。如果你编译
javac a/b/Two.java
第二类应该在a.b包中。然后,可以使用
执行.class文件a / b / Two.classjava a.b.Two
其他&#34;效果&#34;可以通过设置环境变量CLASSPATH来实现,该变量可以被-cp
选项覆盖。 (可能这就是您的情况 - 通过运行echo $CLASSPATH
进行检查。)