[java] com.sun : tools : jar 아티팩트 누락

시작하기 튜토리얼을 따라 왔지만 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 주석에서 다른 해결책을 찾았습니다.

Maven 3 Artifact 문제

<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.jarpom.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에 대한 실제 종속성이 있음이 드러났습니다.

Eclipse보기

그래서 저의 범인은 다음과 같습니다.

<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>