2011-10-25 2 views
1

저는 Ubuntu 11.04에 Jetty를 설치하려고하는데 제 머리카락을 꺼내려고합니다. 클래스 패스 문제가 발생했습니다. JDK를 가리 키도록 JAVA_HOME을 설정하여 start.jar로 Jetty를 시작합니다.Ubuntu에 Jetty를 설치하면 com.sun.tools.javac.Main이 클래스 경로에 없습니다.

/usr/share/jetty$ export JAVA_HOME=/usr/lib/jvm/java-6-sun 
/usr/share/jetty$ java -jar start.jar 

[...] 

com.sun.tools.javac.Main is not on the classpath. 
Perhaps JAVA_HOME does not point to the JDK. 
It is currently set to "/usr/lib/jvm/java-6-sun-1.6.0.26/jre" 

    at org.apache.tools.ant.taskdefs.compilers.CompilerAdapterFactory.getCompiler(CompilerAdapterFactory.java:127) 
... 

내가 설정 한 JAVA_HOME을 무시하고 jre를 사용합니다. 나는 또한 이것을 시도했다 :

java -classpath /usr/lib/jvm/java-6-sun/lib/tools.jar -jar start.jar 

같은 오류 메시지. 그것은 찾지 못했습니다, com.sun.tools.javac.Main, 그건 툴에 있습니다.

제티 (Jetty)의 내장에서, 내 .jsp 파일을 컴파일하려고 할 때 앤트 (Ant)를 사용하고 있으며, 클래스 로더 트릭을하고 있습니다. 누구든지 내 cranesky 소프트웨어 어디 내 tools.jar 파일을 찾을 수있는 비밀을 알 수 있습니까 ??

Sun jdk 및 openjdk에서 동일한 오류가 발생했으며 예, JRE뿐 아니라 JDK도 설치되어 있습니다.

apt-get은 java를 설치하는 방식으로 JDK의 일부인 Java 바이너리가 JRE를 가리 킵니다. 이처럼 :

ls -alph /usr/lib/jvm/java-6-sun/bin/java 
lrwxrwxrwx 1 root root 15 2011-10-25 18:48 /usr/lib/jvm/java-6-sun/bin/java -> ../jre/bin/java 

나는 부두, 재스퍼 또는 개미 시도하고 자바 실행 파일의 위치에 따라 tools.jar를 찾을 수있는 몇 가지 속임수를 수행 같은데요, 그리고 여기에 실패 무슨이다.

실마리가 있습니다. 감사!

+0

'java-6-sun' 디렉토리는 링크입니까? (IMO는 JDK를 "jvm"이라 부르는 것에 이상하게 여길 것입니다.) –

+0

'export'후에'echo $ JAVA_HOME'을 시도하고 그것이 가리키는 곳을 보게 될 것입니다, 또한 JDK home 아래의 bin 디렉토리를 export하십시오 :'export PATH = $ PATH : $ JAVA_HOME/bin'. – ahmedyha

+0

ls -alph/usr/lib/jvm/java-6-sun lrwxrwxrwx 1 root root 19 2011-10-25 18:48/usr/lib/jvm/java-6-sun -> java-6-sun- 1.6.0.26/ – cbare

답변

1

, 여기 당신이 요청한 정보는 다음과 같습니다

$ lsb_release -s -c 
natty 

나는과 같이 태양 JDK를 설치,하지만 같은 오류가 오픈 JDK 발생했음을 기억한다. 나는 꽤 열심히 그와 함께 노력하고 아무데도 없어 이후

sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner" 
sudo apt-get update 
sudo apt-get -y install sun-java6-jdk 
sudo update-alternatives --config java 

나는, 내가 잘못된 궤도에에 start.jar를 실행 환경을 구성 확신 해요.

Jetty 호출의 Jasper는 JSP를 컴파일하는 Ant 태스크를 호출합니다. Ant의 org/apache/tools/ant/taskdefs/Javac.java에 대한 source에서 클래스 경로 설정 위치를 볼 수 있습니다.

내 문제는 환경 변수 또는 해당 체인 아래의 Java 시스템 속성을 전달하거나 전달하지 않는 것과 관련이 있습니다.

못생긴 솔루션

그냥 웃음을 위해, 나는 /usr/lib/jvm/java-6-sun/lib/tools.jar에서 심볼릭 링크를 생성는/usr/lib 디렉토리/JVM/자바에 -6-sun/jre/lib/ext. 못 생겼어? 그러나, 그것은 작동합니다.

+0

솔루션을 찾았 기쁘다. 해킹이기 때문에 실제로 진행되고있는 작업을 파악하고 싶을 것입니다. 행운을 빕니다. –

1

새로운 JAVA_HOME 환경 변수를 내보내고 있지만 새 PATH 환경 변수도 내보내고있는 것을 볼 수 없습니다. 원래 Java 홈 위치에서 java 실행 파일을 계속 가져 왔습니다. export PATH=$JAVA_HOME/bin:$PATH을 포함 해보세요. 코멘트 SO에 좀 읽을 수 있기 때문에

+0

감사합니다. Dan, 나는 그것을 시도했지만 여전히 같은 오류가 발생합니다. – cbare

+0

'lsb_release -s -c'를 어떻게 실행합니까? [jdk 용 우분투 패키지] (http://packages.ubuntu.com/search?keywords=jdk&searchon=names&suite=all§ion=all)를 보면, [Sun JDK는 Hardy 용입니다] (http : /packages.ubuntu.com/hardy/i386/sun-java6-jdk/filelist). 'java-6-sun-1.6.0.26' JDK는 어떻게 설치 되었습니까? 'JAVA_HOME'과'PATH'를 export 한 후에,'which java','java -version','which javac'과'javac -version'의 출력이 모두 올바르게 보이십니까? –

+0

lsb_release -s -c -> natty – cbare

1

도구를 추가 할 수 있습니다.jar 파일을 JVM의 부트 클래스 패스에 추가하십시오.

java -Xbootclasspath/p:/usr/lib/jvm/java-6-sun/lib/tools.jar -jar start.jar 
관련 문제