我有以下文件〜/ 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
答案 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