시작하기 튜토리얼을 따라 왔지만 Maven을 사용하여 플레이 프로젝트를 가져온 후에 멈췄습니다. 64 비트 Windows 7에서 실행되는 Eclipse Indigo를 사용하고 있습니다.
가져온 모든 프로젝트에 동일한 오류가 있습니다.
Missing Artifact com.sun:tools:jar in all the pom.xml files.
몇 시간 동안 포럼을 검색 한 후 다음을 시도했습니다.
최신 Java 1.6.029 설치
JRE를 사용하기 위해 Eclipse Java 환경 설정 변경 JAVA_HOME
을 가리 키도록 환경 변수 \program files\Java\jdk1.6_029
변경 jdk1.6_029
.
나는 정말 playn을 실험하고 싶지만 왜 몇 개의 게시물이 있는지 해결책에 대한 합의 답변을 찾을 수없는 것 같습니다. 어떤 사람들은 Sun이 64bit jdk에서 무언가를 제거했다고 말하고, 다른 사람들은 xml 파일을 편집해야한다고 말하고, 많은 사람들이 JAVA_HOME
.
이 문제를 해결하는 데 도움을 주시면 감사하겠습니다. 여기에는 특별히 이상한 설정이 없기 때문에 많은 사람들에게 유용 할 것입니다.
(편집) 다음은 첫 번째 프로젝트의 pom.xml입니다. Eclipse는 다음과 같은 줄에 오류를 표시합니다.
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.googlecode.playn</groupId>
<artifactId>playn-project</artifactId>
<version>1.1-SNAPSHOT</version>
</parent>
<artifactId>playn-android</artifactId>
<name>PlayN Android</name>
<packaging>jar</packaging>
<repositories>
</repositories>
<dependencies>
<dependency>
<groupId>com.googlecode.playn</groupId>
<artifactId>playn-core</artifactId>
<version>${project.version}</version>
</dependency>
<!-- needed because Android uses the same JSON code as playn-java;
that should be factored into a library shared by both backends -->
<dependency>
<groupId>com.googlecode.playn</groupId>
<artifactId>playn-java</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.google.android</groupId>
<artifactId>android</artifactId>
<version>${android.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<sourceDirectory>src</sourceDirectory>
</build>
</project>
답변
이 문제와 해결 방법 에 대해이 질문 에 대해 방금 게시 했지만 더 관련성이있어 보이기 때문에 여기에도 붙여넣고 확장하겠습니다.
Windows 7에서 Eclipse를 사용할 때 Eclipse 설정의 JRE 목록에서 JRE를 제거하고 JDK가있는 경우에도 동일한 문제가 발생했습니다.
내가해야 할 일은 (귀하의 질문에서 언급했듯이) Eclipse를 시작하는 데 사용하는 바로 가기의 명령 줄을 수정하여 다음과 같이 -vm 인수를 추가하는 것입니다.
-vm "T:\Program Files\Java\jdk1.6.0_26\bin"
물론, 당신의 bin 디렉토리를 가리 키도록하는 것이 조정할 것이다 당신의 JDK 설치합니다. 이것이하는 일은 Eclipse 자체가 JRE 대신 JDK를 사용하여 실행되도록하고 tools.jar
올바르게 찾을 수있게하는 것입니다.
나는 이것이 아무것도 지정되지 않았을 때 Eclipse가 기본 JRE를 찾는 방법과 관련이 있다고 생각합니다. 나는 그것이 JDK보다 JRE를 선호하는 경향이 있고 (왜, 나는 모르겠다) 그것이 찾은 첫 번째 호환 JRE를 찾는 경향이 있다고 생각합니다. 그리고 Vladiat0r의 대답과 같은 Windows 레지스트리 키에서 벗어나면 HKLM\Software\JavaSoft\Java Runtime Environment
키 대신 키를 먼저 찾습니다 HKLM\Software\JavaSoft\Java Development Kit
.
답변
간단한 웹 서비스 응용 프로그램을 개발하는 동안 동일한 문제가 발생했습니다. 제 경우에는 jaxws 라이브러리를 얻기 위해 코드 하우스 플러그를 추가해야했습니다. 그러나 maven pom은 도구 jar 파일에 대해 계속 묻습니다.
위의 설명이 정확하다고 말해야합니다. pom 파일에 아래 항목을 포함 할 수 있습니다.
<dependency>
<groupId>com.sun</groupId>
<artifactId>tools</artifactId>
<version>1.6</version>
<scope>system</scope>
<systemPath>C:\Program Files\Java\jdk1.6.0_29\lib\tools.jar</systemPath>
</dependency>
그러나 프로덕션 인스턴스에 배포해야하는 경우 어떻게됩니까? 경로를 시스템 환경 변수에 대한 참조로 바꿀 수 있지만 적어도 나에게는 여전히 좋지 않습니다.
StackOverflow 주석에서 다른 해결책을 찾았습니다.
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>${struts2.version}</version>
<exclusions>
<exclusion>
<artifactId>tools</artifactId>
<groupId>com.sun</groupId>
</exclusion>
</exclusions>
</dependency>
그들은 도구 항아리에 대한 제외 문을 포함하도록 제안하고 작동합니다. 요약하자면, 종속성 내에 제외 규칙을 포함하고 tool.jar 문제를 피할 수 있습니다.
<exclusions>
<exclusion>
<artifactId>tools</artifactId>
<groupId>com.sun</groupId>
</exclusion>
</exclusions>
답변
저도 같은 문제로 실행하고 나는 그것을 해결할 수 있었던 방법의 종속성 위치를 추가했다 tools.jar
에 pom.xml
. 이렇게 :
<dependency>
<groupId>com.sun</groupId>
<artifactId>tools</artifactId>
<version>1.6</version>
<scope>system</scope>
<systemPath>C:\Program Files\Java\jdk1.6.0_29\lib\tools.jar</systemPath>
</dependency>
<systemPath>
tools.jar 파일이있는 위치로 를 변경해야합니다 .
답변
다른 답변 중 어느 것도 나를 위해하지 않았습니다. eclipse에서 pom.xml의 “Dependency hierarchy”를 확인하는 것이 무엇 이었습니까? 필터 ‘tools’를 제공하면 tools.jar에 대한 실제 종속성이 있음이 드러났습니다.
그래서 저의 범인은 다음과 같습니다.
<dependency>
<groupId>com.github.markusbernhardt</groupId>
<artifactId>robotframework-selenium2library-java</artifactId>
<version>1.4.0.7</version>
<scope>test</scope>
</dependency>
제외를 추가하면 다음과 같이 수정되었습니다.
<dependency>
<groupId>com.github.markusbernhardt</groupId>
<artifactId>robotframework-selenium2library-java</artifactId>
<version>1.4.0.7</version>
<scope>test</scope>
<exclusions>
<exclusion>
<artifactId>tools</artifactId>
<groupId>com.sun</groupId>
</exclusion>
</exclusions>
</dependency>
제외에는 단점이없는 것 같습니다.
답변
나와 Windows 7도 마찬가지입니다. 결국 다음 두 줄을 추가했습니다 eclipse.ini
.
-vm
C:\Program Files\Java\jdk1.6.0_35\bin
나는 %JAVA_HOME%
거기에서 사용해 보았지만 작동하지 않았습니다.
답변
Eclipse 4.3 설정에서이 문제를 해결했습니다. JRE 라이브러리에 JDK 라이브러리를 추가하는 방법으로 만 해결되었습니다.
Go windows-> 설정-> Java-> 설치된 JRE-> JDK 선택 및 편집 클릭-> 외부 JAR 추가를 클릭하고 tools.jar 추가 (JDK / lib에 있음)
답변
컴퓨터의 JDK 버전을 확인하고 pom.xml
둘 다 동일해야합니다.
<dependency>
<groupId>sun.jdk</groupId>
<artifactId>tools</artifactId>
<version>1.8</version>
<scope>system</scope>
<systemPath>C:\Program Files\Java\jdk1.8.0_192\lib\tools.jar</systemPath>
</dependency>