development

왜 ANT는 JAVA_HOME이 틀렸다고 말합니까?

big-blog 2020. 12. 6. 21:46
반응형

왜 ANT는 JAVA_HOME이 틀렸다고 말합니까?


오류가 발생합니다.

C : \ dev \ ws \ springapp \ build.xml : 81 : javac 컴파일러를 찾을 수 없습니다. com.sun.tools.javac.Main이 클래스 경로에 없습니다. 아마도 JAVA_HOME이 JDK를 가리 키지 않을 것입니다. 현재 "C : \ Program Files \ Java \ jre6"로 설정되어 있습니다.

하지만 JAVA_HOME을 C : \ Program Files \ Java \ jdk1.6.0_14로 명확하게 설정했습니다.

ANT는이 값을 어디에서 얻습니까?


JAVA_HOME을 "C : \ Program Files \ Java \ jdk1.6.0_14"로 "명확하게 설정"했다고 말하면 명령 줄에서 "set"을 실행할 때 표시되는 내용입니까? 나는 하나가 전혀 설정되지 않은 경우 Ant가 JAVA_HOME의 값을 추측 할 것이라고 생각합니다 ... JAVA_HOME 대신 JAVAHOME을 설정했을 수 있습니까?

그렇지 않다면 ant.bat배치 파일 을 편집하여 (그리고 그것이 호출하는 것이 무엇이든간에-그것이 복잡한 지 아닌지를 기억할 수 없습니다) 처음에 JAVA_HOME을 인쇄하고 다양한 다른 흥미로운 장소에서 인쇄하는 것이 좋습니다.


  1. Eclipse에서 실행외부 도구외부 도구 구성을 클릭 하십시오 .
  2. JRE 탭을 클릭 하십시오.
  3. 클릭 설치의 JRE를 ... 버튼을 클릭합니다.
  4. 추가 버튼을 클릭 합니다.
    ( 해당되는 경우 표준 VM 선택 )
  5. 디렉토리 버튼을 클릭 합니다.
  6. 설치된 Java
    (예 :)의 JDK 버전 (JRE 아님)을 찾습니다 C:\Program Files\Java\jdk1.7.0_04.
  7. 마침확인을 클릭 합니다 .
  8. Separate JRE 에서 JDK를 선택하고 Close를 클릭 합니다 .
  9. Ant 스크립트를 다시 실행하십시오. 재미있게 보내십시오!

이것은 내가 만난 특정 시나리오에서 작동했습니다.


다음 명령을 사용하여 Ant 빌드를 실행하려고 할 때 동일한 문제가 발생했습니다.

java -cp ant.jar:ant-launcher.jar org.apache.tools.ant.Main

명령의 출력은 다음과 같습니다.

BUILD FAILED
XXX/build.xml:8: Unable to find a javac compiler;
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-openjdk/jre"

Java 실행 파일은 JDK가 설치된 "/ usr / lib / jvm / java-6-openjdk"와 달리 "/ usr / lib / jvm / java-6-openjdk / jre"를 JAVA_HOME으로 선택하는 것 같습니다.

fork="yes"<javac>작업 을 설정하여이 문제를 해결했습니다 .

http://ant.apache.org/manual/Tasks/javac.html을 살펴보십시오.


JAVA_HOME 설정에 / bin을 포함하고 Ant가 여기에 / bin을 추가하여 exe를 찾지 못할 수도 있습니다. 나에게 일어난 일입니다 :}


확실히 당신은 할 수 있도록 하지 이하지 않습니다 일 : 후행 세미콜론을 사용합니다 :

set JAVA_HOME=C:\Program Files (x86)\Java\jdk1.6.0_29;

이것은 :

set JAVA_HOME=C:\Program Files (x86)\Java\jdk1.6.0_29

나는 비슷한 문제를 만났습니다. 나는 Maven 빌드에서 Ant 작업을 실행하도록 링크하고 문제가 발생했습니다. 다음 단계로 수정했습니다.

  • JAVA_HOME이 올바르게 설정되어 있는지 확인하십시오. 명령 줄의 Windowns에서 다음과 같이 확인할 수 있습니다. C :> echo % JAVA_HOME % 결과는 다음과 같습니다. C : \ Progra ~ 1 \ Java \ jdk1.6.0_30 \
  • tools.jar 파일을 % JAVA_HOME % \ lib에서 Maven의 lib 디렉토리로 복사합니다.

그리고 그것은 나를 위해 일했습니다.


이 문제를 해결하려면 window-> preferences-> ant-> runtime에 tools.jar 파일을 추가하십시오.


Eclipse에서 설치된 JRE 설정을 프로젝트 (프로젝트 속성-> Java 빌드 경로-> 라이브러리)에서 JDK로 설정하거나 환경 설정 (Java-> 설치된 JRE)에서 전역 기본값으로 설정합니다. eclispe 설정은 시스템 변수보다 강합니다.


시스템 및 사용자 환경 변수에 대해 알고 있기를 바랍니다. 사용자는 시스템보다 선호됩니다. 시스템 변수에 JAVA_HOME을 설정하고 사용자 변수에 동일한 항목이 있으면 후자 만 얻을 수 있습니다.

내 컴퓨터를 마우스 오른쪽 버튼으로 클릭하고 속성으로 이동하고 고급 탭을 선택한 다음 환경 변수를 클릭하여 사용자 및 시스템 환경 변수 목록을 확인합니다.


세미콜론이 저를 버렸습니다. JAVA_HOME"C : \ jdk1.6.0_26;"으로 설정했습니다. "C : \ jdk1.6.0_26"대신. ant.bat파일 을 검사하라는 Jon Skeet의 제안에 따라 후행 세미콜론을 제거했습니다 . 다음은 해당 파일의 일부입니다.

if "%JAVA_HOME%" == "" goto noJavaHome
if not exist "%JAVA_HOME%\bin\java.exe" goto noJavaHome

따라서 세미콜론이 끝 부분에서 잘리지 않아 파일을 찾지 못해 "C : \ Java \ jre6"또는 이와 유사한 것으로 기본 설정됩니다.

혼란스러운 부분은 HowtoBuild 페이지에 세미콜론을 사용하도록 명시되어 있지만 이것이 깨지는 것 같습니다.


동일한 문제에 직면하여 javac 태그의 실행 속성을 javac.exe의 위치로 설정하면 문제가 해결되었습니다. 이것은 문제를 해결했습니다.

<javac srcdir="${srcDir}" destdir="${buildDir}" fork="true" executable="C:\Program Files\Java\jdk1.7.0_03\bin\javac"/>

실제로 superuser.com 에서이 답변을 찾았지만 JDK \ lib 디렉토리에서 JRE \ lib 디렉토리로 tools.jar을 복사해야했습니다.

제로 의미가 있습니다 ... 내가 생각할 수있는 유일한 것은 Sun이 최신 Java 런타임 (Java 7 Update 11) 에서이 버그를 도입했거나 현재 JDK 위치를 읽는 방식에서 Ant의 버그입니다 (JRE는 JDK보다 업데이트되었습니다. 분명히 썬의 어리석은 일입니다 ... JRE를 업데이트 할 때마다 JDK를 릴리스해야합니다).

내 JAVA_HOME이 올바르게 설정되었습니다. "set JAVA_HOME"을 통해 확인했습니다. 내 JDK 디렉토리를 가리키고 철자가 정확했습니다. 그러나 Ant는 javac를 찾을 수 없다고 주장했지만 JAVA_HOME이 내 JRE 디렉토리에 있다고 생각했습니다.

내 시스템은 최신 Sun JRE7 업데이트 (10 및 11) 전에 제대로 작동했습니다. Ant는 버전 1.8.4입니다.


당신이있는 경우 JAVA_HOME설정을하지만, 거기에 오타가있다, 당신은 또한 JRE6 경로에 가짜 참조를 볼 수 있습니다.


다른 모든 것이 정확하면 다음을 시도하십시오.

  1. 창-> 환경 설정-> Ant-> 런타임-> 클래스 경로로 이동
  2. 전역 항목을 확장하고 여기에서 사용 가능한 jdk 도구를 확인하십시오.
  3. "C : \ Program Files \ Java \ jdk1.6.0_45 \ lib \ tools.jar"과 같은 특정 Java 버전에서 필요한 tools.jar을 추가하십시오.
  4. 이제 결과를 빌드하고 확인하십시오.

참고 : 여러 개의 tools.jar (Java 컴파일러)가있는 경우 사용하려는 Java 컴파일러에 대한 tools.jar을 추가하고 tools.jar 목록에서 위로 이동하여 우선 순위를 지정하십시오.


아래 단계에서 JDK 경로를 설정하십시오.

  1. '실행'-> 외부 도구-> 외부 도구 구성으로 이동하십시오.

  2. -> 'JRE'를 선택한 다음 드롭 다운 목록에서 사용 가능한 JDK를 선택합니다. 전의. jdk1.8.0_25


I had the same problem. My JDK package pointed by JAVA_HOME didn't have any tools.jar Be sure that your JDK instal.lation has tools.jar

(clearly the message error is confusing)


Set JAVA_HOME in the environment variables as D:\Program Files\IBM\SDP\jdk Do not give any quotes or semicolon. It's works for me.Please try the solution. Actually in ant.bat it checks for appropriate JAVA_HOME in case if ant.bat not able to find it then it's JAVA_HOME points the default JRE.


I was also facing the same problem. I am using Windows 7 and I had two versions of java installed. First I have installed latest version java 7 and then version 5.

Contents of my java installation directory:

C:\Program Files\Java>
jdk1.5.0_14
jdk1.7.0_17
jre1.5.0_14
jre7

and my JAVA_HOME was set to the correct value, which was:

C:\>set ja
JAVA_HOME=C:\Program Files\Java\jdk1.5.0_14

But still I was getting the same problem:

XXXXXXX\build.xml:478: The following error occurred while
executing this line:
XXXXXXX\build.xml:477: Unable to find a javac compiler;
com.sun.tools.javac.Main is not on the classpath.
Perhaps JAVA_HOME does not point to the JDK.
It is currently set to "C:\Program Files\Java\jre7"

After trying out all the suggestion in this thread I realized my mistake. I was trying to set the environment variable in "User variables" instead of "System Variables" section. After setting it in "System Variables" it worked fine. I am facing another problem though.

The default version of java it points to is still 7.

C:\>java -version
java version "1.7.0_17"
Java(TM) SE Runtime Environment (build 1.7.0_17-b02)
Java HotSpot(TM) Client VM (build 23.7-b01, mixed mode, sharing)

I am not sure how to make it point to version 5.


I faced this problem when building my project with Jenkins. First, it could not find ant.bat, which was fixed by adding the path to ant.bat to the system environment variable path. Then ant could not find the jdk directory. This was fixed by right-clicking on my computer > properties > advanced > environment variables and creating a new environment variable called JAVA_HOME and assigning it a value of C:\Program Files\Java\jdk1.7.0_21. Don't create this environment variable in User Variables. Create it under System Variables only.
In both cases, I had to restart the system.


It is common to get this issue. I cannot set any specific Java home in my system as I have 2 different version of Java (Java 6 and Java 7) for different environment. To resolve the issue, I included the JDK path in the run configuration when opening the build.xml file. This way, 2 different build files use 2 different Java version for build. I think there might be a better solution to this problem but at least the above approach avoid setting the JAVA_HOME variable.


FYI, I am using Windows 7 and had to restart Windows in order for the new JAVA_HOME setting to take effect.


had the same problem;

c:\jb\src\build.xml:191: Unable to find a javac compiler;
com.sun.tools.javac.Main is not on the classpath.
Perhaps JAVA_HOME does not point to the JDK.
It is currently set to "C:\Program Files\Java\jre7"

Total time: 0 seconds

c:\jb\src>echo %JAVA_HOME%
c:\Program Files\Java\jdk1.7.0_13

solution:

path = c:\ant\bin\;%PATH%
path = c:\Program Files\Java\jdk1.7.0_17\bin;%PATH%
set "JAVA_HOME=c:\Program Files\Java\jdk1.7.0_13"

I guess the jdk path instruction alone would do it but I'm to lazy to figure it out above solution is bullet proof. :-)

Also using Windows7


Quick work around for the same is

Copy C:\Program Files\Java\jdk1.6.0_14\lib\tools.jar to C:\Program Files\Java\jre6\lib\

This exception is coming because JAVA_HOME is being set as C:\Program Files\Java\jre6 and Ant is not able to find tools.jar in it.


If need to run ant in eclipse with inbuilt eclipse jdk add the below line in build.xml

<property name="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/>

참고URL : https://stackoverflow.com/questions/1558780/why-does-ant-tell-me-that-java-home-is-wrong-when-it-is-not

반응형