2012-01-27 1 views
0

저는 Linux에서 새로운 사용자입니다. 테스터 : 난 그냥 내가 메인 클래스를 찾을 수 없습니다 이러한 오류를 컴파일 후 내 프로그램을 실행할 수 없습니다. 지원되지 않는 클래스 버전 오류가 발생했습니다.

Exception in thread "main" java.lang.UnsupportedClassVersionError: tester : Unsupported major.minor version 51.0 
at java.lang.ClassLoader.defineClass1(Native Method) 
at java.lang.ClassLoader.defineClass(ClassLoader.java:634) 
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
at java.net.URLClassLoader.defineClass(URLClassLoader.java:277) 
at java.net.URLClassLoader.access$000(URLClassLoader.java:73) 
at java.net.URLClassLoader$1.run(URLClassLoader.java:212) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:205) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:321) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:266) 

을 얻을 jdk1.7.0_02.rpm를 설치하고 난 java tester하여 파일을 실행하려고하면 javac tester.java를 사용하여 내 프로그램을 컴파일하려고 노력했다. 프로그램이 종료됩니다.

는 다음 나는 자바 -version을 확인하고는했다 :
java version "1.6.0_22" 
OpenJDK Runtime Environment (IcedTea6 1.10.4) (fedora-61.1.10.4.fc16-i386) 
OpenJDK Server VM (build 20.0-b11, mixed mode) 

지금 내가 어떻게이 버전을 변경합니까? 심지어 jre1.7.0_02를 설치했지만 변경된 사항이 없습니다.

이 일어나고있는 것입니다 : 터미널에서

enter image description here

+2

제발, CLI에서 텍스트를 복사/붙여 넣기하는 방법을 배우시겠습니까? 이 스크린 샷은 덜 유용했지만 더 많은 대역폭을 필요로했습니다. –

+0

** 내 프로그램을 실행할 수있는 유일한 대답은 ** –

+0

이 문제는 해결되지 않았습니다. 이것은 설치 문제이며 Java 환경과 관련된 것보다 Linux 환경이 구성되는 방식과 관련이 있습니다. – kittylyst

답변

2

javaccross-compilation options를 사용합니다. -source-target 버전을 지정하고 프롬프트에 따라 다른 옵션을 따르십시오.


그런 방법 알려주세요?

javac -source 1.6 -target 1.6 -bootclasspath /path/to/1.6/j2se/rt.jar *.java 

당신이 source/target을 지정하면

, 1.7 컴파일러는 클래스, 메소드 및 소스에서 참조 속성은 대상 항아리를 사용할 수 있는지 확인하는 것이 중요하다 -bootclasspath 옵션을 사용하여 경고합니다. 이전 버전의 컴파일러는 bootclasspath에 대해 경고하지 않았습니다.

+0

1.7.0_02에서 소스를 실행하고 VM 1.6.0_02에서 실행할 수 없습니다. –

+0

수 있습니다. * 내 대답에 찬성 했나? –

+0

번호. 나는 대답이 분노 할 때까지 downvote하지 않는다 –

4

실행 :

sudo update-alternatives --config java 

그리고 자바에서 선호하는 버전을 선택합니다. 옵션으로 찾고있는 버전이 보이지 않는 경우 this 사이트를 확인하십시오.

+0

[아무것도 일어나지 않습니다] (http://i43.tinypic.com/25813xl.png) 1 입력 후 –

+0

@BitFiber 그것은 나를 위해 일했습니다 ... 고마워 :) –

0

먼저, Java 애플리케이션 빌드를 루트 권한으로 실행해서는 안됩니다.

sudo 기능을 사용하는 사용자 계정으로 변경하고 절대적으로 필요할 때까지 루트 priv를 사용하지 마십시오.

javac이 버전 7로 업데이트되었지만 자바가 업데이트 된 것처럼 보입니다.

이 수익을 무엇을 :

javac -version 

당신은 또한 우리에게 JAVA_HOME 환경 변수의 현재 값을 알려 주어야합니다. 이처럼 :

set | grep ^JA 
+0

1.7.0_02 javac 버전 –

+0

좋아, 그래서 이것은 설치가 완전히 올바르게 실행되지 않았 음을 알려주십시오. 또는 루트 용 셸 설정에 경로가 하드 코드되어있을 수도 있습니다. "which java"및 "javac"의 출력은 무엇입니까? – kittylyst

+0

Java가 1.6.0_02이고 javac이 1.7.0_02 –

0

Java 프로그램을 실행할 때 JRE 1.7을 사용하려면 시스템이 필요합니다. 이를 수행하려면 JAVA_HOME이 JRE 1로 올바르게 설정되어 있는지 확인하십시오.7 :

또한
export JAVA_HOME=/path/to/JRE1.7 

확인은 적절한 자바/bin 디렉토리로 PATH 변수 가리 :

export PATH=$PATH:/path/to/JRE1.7/bin 

가 재부팅 이상이 환경 변수를 지속하기/로그 아웃은 리눅스 배포판 당신에 따라 달라집니다 사용 중입니다 ...

EDIT : 설명 : 버전 1.7로 컴파일하는 경우 (기본값으로 1.7을 대상으로 지정)에는> = 1.7 JRE를 사용해야합니다. 은 "-target 1.6"있는 CmdLine-인수를 사용하여 1.6 호환 코드를 생성

  1. (위에서 설명한대로)는 1.7로 컴파일 된 프로그램을 실행하려면 JRE 1.7을 사용하여
  2. :

    그래서 당신은 두 가지 옵션이 있습니다 javac 때
    컴파일.

+0

* "JRE 1을 사용하려면 시스템이 필요합니다.7 "* 선호하는 & 유일한 옵션처럼 말하는 것 같아요. –

+0

** [root @ Feddy non-admin] # ** export JAVA_HOME =/usr/java/jre1.7.0_02 * * [root @ Feddy non-admin] # ** export PATH = $ PATH : /jre1.7.0_02/bin 하지만 아무 일도 없었습니다. –

+0

두 번째 작업을 수행해야합니다 : export PATH = $ PATH :/usr/java/jre1 .7.0_02/bin – quaylar

0

시스템 환경의 JAVA_HOME도 설정해야합니다. 앱 속성에서 JAVA_HOME을 설정하는 경우에도 마찬가지입니다.