ANTLR (언어 처리 라이브러리) 설명서를 통해 작업 중이며 은으로 커맨드 라인을 사용하여 쉽게 컴파일해야한다는 많은 예제가 있습니다. 클래스를 실행할 때 Jar를 찾을 수 없습니다.
일부 정보
테 문제를 얻을 수 있습니다 :antlr-3.2.jar
라이브러리 클래스가 포함되어 있습니다. 나는 antlr-3.2.jar
을 CLASSPATH
환경 변수 (Windows 7)에 추가했고, javac
으로 클래스를 컴파일하면 모든 것이 잘 동작한다. 이 내가 내 프로그램을 컴파일하기 위해 실행할 것입니다 :
javac Test.java ExprLexer.java ExprParser.java
Test.java
내 main()
-method ExprLexer
및 ExprParser
반면이 ANTLR에 의해 생성되는 포함
antlr-3.2.jar
에 포함 된 클래스를 사용합니다. 그러나 지금까지 그렇게 좋았습니다. 방금 말했듯이, 컴파일은 잘 작동합니다.
내가 문제가되는 Test.class
을 실행하려고 할 때입니다.
java -cp ./ Test
이를 실행하는 인터프리터 내가 CLASSPATH
변수에 항목을 추가 입력해도 그가의 antlr-3.2.jar
에 포함 된 ANTLR - 클래스를 찾을 수없는 것을 저에게 말한다 : 이 내가 입력 한 내용입니다.
Exception in thread "main" java.lang.NoClassDefFoundError: org/antlr/runtime/Cha
rStream
Caused by: java.lang.ClassNotFoundException: org.antlr.runtime.CharStream
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
Could not find the main class: Test. Program will exit.
Windows 7 및 Java 1.6_20을 사용하고 있습니다. 누군가가 무슨 일이 일어나는지 말할 수 있습니까? 왜 통역사는 병을 들여다 보지 않을 것인가? CLASSPATH
에 지정된 보관소?
나는 일종의 일터 워크를 발견했습니다. antlr-3.2.jar를 Test.class가있는 디렉토리에 복사 한 후 실행했습니다.
java -cp ./;antlr-3.2.jar Test
이 방법으로 문제가 해결되었습니다. 하지만 테스트 프로그램을 실행할 때마다 jar-Archive를 입력하지 않으려 고합니다. 통역사에게 자동으로 아카이브를 조사해야한다고 말할 가능성이 있습니까?
아! :) 감사! – Simon