执行java类文件时出错

时间:2014-06-27 14:41:02

标签: java linux

我有以下文件〜/ workspace / A / A.java:

package A;
public class A{
    public static void main(String[]args){
        System.out.println("Hello world");
    }
}

使用ecj进行编译不会给我带来问题,但是当我执行时会出现这个错误:

~/workspace/A $ java A
Exception in thread "main" java.lang.NoClassDefFoundError: A (wrong name: A/A)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
        at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)
~/workspace/A $ java -cp . A
Exception in thread "main" java.lang.NoClassDefFoundError: A (wrong name: A/A)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
        at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)

我在Linux Mint 17上尝试使用openjdk-7-jre版本7u55-2.4.7-1ubuntu1

6 个答案:

答案 0 :(得分:3)

正如你所说,你有 /workspace/A/A.java 的结构 只需打开终端并浏览到工作区目录,然后键入以下命令

用于编译

javac A/A.java

执行

java A.A

答案 1 :(得分:0)

你是先尝试编写你的课程然后再执行它

javac A.java

java A

答案 2 :(得分:0)

首先你必须使用以下命令编译java程序。

javac A.java

然后,运行 java A

答案 3 :(得分:0)

首先,您需要使用javac A.java进行编译

然后你还需要在运行时指定类路径

java -classpath。甲

答案 4 :(得分:0)

不知道ecj是否与javac不同,所以在编译之后确保A.class文件与java文件(〜/ workspace / A /)在同一目录中结束并尝试:

cd ~/workspace
java -cp . A.A

答案 5 :(得分:0)

我建议使用小写的JAVA包名,尤其是当您的类名与包名相同时。你可能想读这个: http://docs.oracle.com/javase/tutorial/java/package/namingpkgs.html