내가 내 클래스 중 하나에서 자바 바이너리를 실행하고 있습니다 던져 도착하고, 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
예, 컴파일되었습니다. 컴파일 작업은 실행 전에 수행됩니다. CLASSPATH에 -classpath "/ home/geo"가로드되지 않습니까? – Geo
클래스에 패키지가 있습니까? 그렇다면 패키지의 루트가 CLASSPATH에 있어야하는 디렉토리입니다. 아니요 인 경우 하나 추가하십시오. 패키지가없는 클래스는 간단합니다. – duffymo