我从我的课的一个执行Java的二进制文件,以及一个ClassNotFoundException得到投掷:我不明白为什么这个ClassNotFoundException的得到投掷
Results of executing:/usr/bin/java -classpath "/home/geo" Geoline
Error stream:
Exception in thread "main" java.lang.NoClassDefFoundError: Geoline
Caused by: java.lang.ClassNotFoundException: Geoline
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:323)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:268)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:336)
Could not find the main class: Geoline. Program will exit.
Output stream:
的GEOLINE类位于/家庭/地理/ Geoline.java。问题是,无论我在哪个文件系统中,如果手动执行相同的命令,该类都会被执行。使用Runtime.getRuntime()执行二进制文件时,为什么不会发生同样的情况?exec?
编辑:这里与冗余标志生成的输出:pastie link 编辑:这里的文件的内容:
public class Geoline {
public static void main(String[] args) {
System.out.println("blabla");
}
}
为什么要引用.java文件?我讨厌问一个“愚蠢”的问题,但是你把它编译成一个.class文件吗?并且是路径/home/geo/Geoline.class在CLASSPATH中的目录? – duffymo 2009-07-03 19:39:03
是的,它被编译。编译发生在运行操作之前。是不是-classpath“/ home/geo”将它加载到CLASSPATH中? – Geo 2009-07-03 19:45:25
班上有包吗?如果是,则它是包必须位于CLASSPATH中的包的根目录。如果不是,请添加一个。没有包的类是微不足道的。 – duffymo 2009-07-03 19:54:20