在mac上运行java的问题

时间:2014-06-22 05:57:02

标签: java macos user-interface classpath

我使用的是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?
请帮忙。

提前谢谢;)

1 个答案:

答案 0 :(得分:1)

没有classpath选项的javac或java将工作目录作为默认的类路径。

对类的引用必须包含包名。所以如果你编译并执行

javac One.java
java One

第一类应该在默认包中(没有包语句)。如果你编译

javac a/b/Two.java

第二类应该在a.b包中。然后,可以使用

执行.class文件a / b / Two.class
java a.b.Two

其他&#34;效果&#34;可以通过设置环境变量CLASSPATH来实现,该变量可以被-cp选项覆盖。 (可能这就是您的情况 - 通过运行echo $CLASSPATH进行检查。)