2012-07-06 2 views
17

내 .java (복수)를 적어도 Java 1.6 이상, 바람직하게는 Java 1.5 및 최신 버전의 Java와 호환되는 하나의 .jar으로 컴파일하려고합니다. (내가 가지고 Java 1.7.0_5)이전 버전의 Java를 지원하는 .java를 어떻게 컴파일합니까?

+0

http://www.veryant.com/support/phpkb/question.php?ID=57 – Mualig

+0

'javac -source 1.5 -target 1.5 OverridingInternalExample.java'가 저에게 도움이되었습니다. –

답변

13

1.5 -source 예, 컴파일시에 컴파일러의 버전을 설정할 수 있습니다. 그리고 java 코드를 이전 버전의 java로 컴파일하십시오. 오라클 기사에서

: 크로스 컴파일 예

http://docs.oracle.com/javase/1.5.0/docs/tooldocs/windows/javac.html

는 여기서 우리는 1.4 VM에서 실행되는 코드를 컴파일 javac의를 사용합니다.

% javac -target 1.4 -bootclasspath jdk1.4.2/lib/classes.zip \ 
      -extdirs "" OldCode.java 

코드 버전을 설정하려면 다음 매개 변수가 필요할 수도 있습니다.

-source release 

- 허용되는 소스 코드의 버전을 지정합니다.

2

javac -target 1.5 <source files> 사용할 수 있습니다.

빌드 시스템, Eclipse 또는 다른 IDE를 사용하여 jar를 빌드하는 경우, 어느 것을 지정하십시오.

+1

그리고'-source 1.5 ' –

+0

나는 netbeans를 가지고 있지만 텍스트 파일 만 사용할 수 있습니다. 어떻게 그것을 .java의 모든 디렉토리에 적용할까요? – Primm

+1

netbeans를 사용하여 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 속성으로 이동하여 열리는 대화 상자 아래쪽의 드롭 다운에서 "소스/이진 형식"을 변경하십시오 – tofarr

0

최신 버전의 JDK를 사용하고 소스 레벨을 1.5로 설정할 수 있습니다. 1.5 이후에 도입 된 클래스/메소드를 사용하지 않는 한 모든 JVM 1.5 이상 버전에서 정상이어야합니다. :

0

JDK 9로, 당신은 빌드 자바보다 낮은 컴파일러의 대상 버전을 지정할 수 있습니다

javac -source N -target N –bootclasspath rtN.jar 
0

에 해당합니다

javac -release N ... 

을 크로스 컴파일을위한 새로운 옵션을 지원 javac의 버전 (모든 대답은 기본적으로 그렇게 말했습니다.)하지만 당신은 안됩니다 : 실제 타겟 버전의 클래스 라이브러리를 제공 할 때만 작동하기 때문에 상당히 엉망입니다. 그렇게하면 컴파일 할 때이 오래된 Java 버전을 사용하는 것이 훨씬 낫습니다. 설치하기가 훨씬 쉬우 며 물건도 적습니다. Java 9의 경우 옵션이 약간 좋지만 rt.jar에 대해 오래된 JDK가 필요합니다.

개발자가 수행 할 수있는 것은 -target/-bootclasspath 트릭을 사용하면 더 빠른 컴파일러와 경고를 얻을 수 있지만 IT 및 릴리스 빌드는 대상 버전을 사용하여 완료해야합니다.

관련 문제