104

I've been following the getting started tutorial, but am stuck after I imported the playn project using Maven. I am using Eclipse Indigo running on 64bit Windows 7.

All the imported projects have the same error:

Missing Artifact com.sun:tools:jar in all the pom.xml files.

After a couple hours of searching forums I have tried:

Installing the latest Java 1.6.029 Changing my JAVA_HOME environment variable to point to \program files\Java\jdk1.6_029 Changing my Eclipse Java preferences to use the JRE jdk1.6_029.

I would really like to experiment with playn, but why there are a few posts I can't seem to find a consenus answer on the solution. Some people say Sun removed something from the 64bit jdk, others say you must edit your xml files, many people have said you have change your JAVA_HOME, and another said you have to change your VM options for Eclipse.

Any help on clearing this up would be appreciated, and possibly useful for many, since I do not have a particularly odd setup here.

(edit) Here is the pom.xml in the first project. Eclipse flags error in the line which says:

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

27 に答える 27

58

この同じ問題とその解決方法についてこの質問に投稿しましたが、より関連性が高いと思われるため、ここにも貼り付けます (さらに詳しく説明します)。

Windows 7 で Eclipse を使用しているときに、Eclipse 設定の JRE のリストから JRE を削除し、そこに JDK を配置しただけでも、同じ問題が発生しました。

私がしなければならなかったのは(質問で述べたように)、Eclipseを起動するために使用するショートカットのコマンドラインを変更して、次のように-vm引数を追加することでした:

-vm "T:\Program Files\Java\jdk1.6.0_26\bin"

もちろん、JDK インストールの bin ディレクトリを指すように調整します。これにより、Eclipse 自体が JRE の代わりに JDK を使用して実行されるようになり、tools.jar適切に見つけることができます。

これは、何も指定されていない場合に Eclipse がデフォルトの JRE を見つける方法に関係していると思います。JDKよりもJREを好む傾向があり(理由はわかりません)、最初に見つかった互換性のあるJREを選択する傾向があると思います。また、Vladiat0r の回答が示唆するように Windows レジストリ キーから外れている場合は、HKLM\Software\JavaSoft\Java Runtime Environmentキーの代わりに最初にキーを探しHKLM\Software\JavaSoft\Java Development Kitます。

于 2012-01-18T17:44:41.470 に答える
30

シンプルな Web サービス アプリケーションを開発しているときに同じ問題が発生しました。私の場合は、jaxws ライブラリを取得するために codehous プラグインを追加する必要がありました。ただし、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 アーティファクトの問題

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

彼らは、ツール jar の除外ステートメントを含めることを提案しており、それは機能します。要約すると、依存関係に除外ルールを含めて、tool.jar の問題を回避できます。

 <exclusions>
            <exclusion>
                <artifactId>tools</artifactId>
                <groupId>com.sun</groupId>
            </exclusion>
        </exclusions>
于 2012-09-01T20:03:03.727 に答える
27

私は同じ問題に遭遇し、それを解決できた方法は、の依存関係の場所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 ファイルがある場所に必ず変更してください。

于 2011-12-06T05:33:29.373 に答える
25

他の答えはどれも私のためにそれをしませんでした。Eclipse で pom.xml の「依存関係階層」を確認することでした。ここで、フィルター「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>

除外にはマイナス面はないようです。

于 2015-09-30T16:54:17.657 に答える
8

私とWindows 7も同じです。最終的に次の2行を追加しましたeclipse.ini

-vm 
C:\Program Files\Java\jdk1.6.0_35\bin

そこで使ってみ%JAVA_HOME%ましたがダメでした。

于 2013-03-10T18:22:57.550 に答える
6

私はEclipse 4.3の設定でこの問題を解決しました - JDKライブラリをJREのライブラリに追加するだけです。

ウィンドウに移動 -> 設定 -> Java -> インストール済みの JRE -> JDK を選択して [編集] をクリック -> [外部 JAR の追加] をクリックし、tools.jar (JDK/lib に配置) を追加します。

于 2013-10-04T12:30:43.197 に答える
6

マシンの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>
于 2016-09-07T09:23:49.200 に答える
3

しばらく苦労した後eclipse.ini、コマンドラインの代わりにこれを使用できるようになりました。最後にドキュメントを読んだ後、-vm 引数は引用符で囲まれていない別の行にあり、-vmargs の前にある必要があることに気付きました。

-vm
C:\Program Files\Java\jdk1.7.0_45\bin\javaw.exe
于 2014-03-25T00:37:33.813 に答える
1

他のポスターが述べているように、ここでの問題は、Eclipse が使用している JRE がツール jar を見つけられないことに関係しています。上記とは少し異なる方向に進むことで問題を解決しましたが、それは私のプロジェクトと環境が原因でした.

Eclipse 4.5 では実行時に少なくとも Java 7 が必要なので、C:\java\jre1.8.0_45 にある Java 8 JRE を使用するようにシステムをセットアップしました。

次に、Java 6 JDK で実行していることを前提とした POM ファイルを使用しています。

  <profiles>
    <profile>
      <id>default-profile</id>
      <activation>
        <activeByDefault>true</activeByDefault>
        <file>
          <exists>${java.home}/../lib/tools.jar</exists>
        </file>
      </activation>
      <properties>
        <toolsjar>${java.home}/../lib/tools.jar</toolsjar>
      </properties>
    </profile>
    <profile>
      <id>osx_profile</id>
      <activation>
        <activeByDefault>false</activeByDefault>
        <os>
          <family>mac</family>
        </os>
      </activation>
      <properties>
        <toolsjar>${java.home}/../Classes/classes.jar</toolsjar>
      </properties>
    </profile>
  </profiles>

  <dependencies>
    <dependency>
      <groupId>com.sun</groupId>
      <artifactId>tools</artifactId>
      <version>1.6.0</version>
      <scope>system</scope>
      <systemPath>${toolsjar}</systemPath>
    </dependency>
  </dependencies>

私は POM ファイルを変更することを許可されていないので、ちょっとしたことをしなければなりませんでした。Java 6 JDK から tools.jar をコピーし、ディレクトリ C:\java\lib を作成してそこに貼り付けました。その後、Eclipse を再起動し、プロジェクトをクリーンアップしました。そしてVOILAエラーはなくなりました。

これはエレガントな解決策ではありません。適切な解決策はPOMのセットアップ方法を変更することだと思いますが、できなかったので、これは機能します。

于 2015-07-30T14:42:21.617 に答える
1

eclipse.ini修正を使用して終了しました:

openFile
-vm (Your Java Home JDK here)

たとえば、-vm C:\Java\JDK\1.6.

また、JRE を JDK に変更する必要がありました。

Eclipse IDE で次の場所に移動します。

  1. ウィンドウ -> 設定 -> インストール済みの JRE
  2. [追加] をクリックします (新しい JRE を見つけるため)。
  3. 標準 JVM を選択 -> 次へ
  4. ディレクトリをクリックして JRE ホームを見つけ、JDK_INSTALL_LOCATION を入力して終了します。
  5. Java プロジェクトの [プロパティ] -> [Java ビルド パス] -> [ライブラリ] -> [JRE] を選択 -> [編集] -> [ワークスペースのデフォルト JRE] を選択 -> [完了] に移動します。
  6. project -> clean で完全なワークスペースのクリーンアップを行います。
于 2013-08-22T11:48:11.670 に答える
1

この依存関係を pom.xml ファイルに追加します。この助けを願っています。
プロパティで、<systemPath>jdk lib パスを記述する必要があります。

    <dependency>  
          <groupId>com.sun</groupId> 
           <artifactId>tools</artifactId>
        <version>1.4.2</version>
        <scope>system</scope>
        <systemPath>C:/Program Files/Java/jdk1.6.0_30/lib/tools.jar</systemPath>
        </dependency> 
于 2013-07-12T07:12:15.820 に答える
1

pom ファイルの有効な POM タブに、次の派生パスが表示 C:\Program Files\Java\jre6/../lib/tools.jarされます。Windows では有効なパスではないと思います。tools.jar を jre6/lib フォルダーと Java/lib フォルダーにコピーしようとしましたが、成功しませんでした。

値「C:\Program Files\Java\jre6」はレジストリから取得されます

HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\1.6.0_30
HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\1.6

そして、jdk JRE がインストールされている場所に JavaHome キーを設定します。その後、すべてのコンパイラ エラーがなくなりました。

JDKを再インストールしても解決しませんでした。JAVA_HOME または java.home システム環境変数を設定しても役に立ちませんでした。

私が見たもう 1 つの方法は、各 pom xml ファイルに正しいパスを指定して依存関係を追加することですが、playn-samples にはファイルがたくさんあり、編集するのは非常に面倒です。

これは、間違ったパスを示す有効な POM の結果です。

 <dependency>
      <groupId>com.sun</groupId>
      <artifactId>tools</artifactId>
      <version>1.6</version>
      <scope>system</scope>
      <systemPath>C:\Program Files\Java\jre6/../lib/tools.jar</systemPath>
      <optional>true</optional>
    </dependency>
于 2011-12-24T01:28:53.553 に答える
0

この問題が発生しました。Windows 上の JBossDevStudio 9.1 は 32 ビット プログラムであることが判明しました。Eclipse、つまり JBossDevStudio は、間違ったタイプの JVM では動作しません。64 ビット Eclipse には 64 ビット JVM が必要であり、32 ビット Eclipse には 32 ビット JVM が必要です。したがって、インストールした 64 ビット JDK で実行するように Eclipse を構成しても機能しませんでした。

32 ビット JDK をインストールし、そこから Eclipse を実行すると、問題が解決しました。

少なくとも私のプロジェクトの 1 つで、Eclipse プロジェクトのプロパティでランタイム JDK を構成しようとした別のプロジェクトがまだ壊れています。

于 2016-04-27T08:33:52.080 に答える
0

Windows 7 と Eclipse 3.7 で同じ問題が発生しました。

eclipse.exe -vm "D:\JDK6\bin"

cmd を開始してそのように Eclipse を起動するか、ショートカットを編集して「ターゲット セクション」の引数として -vm "D:\JDK6\bin" を追加することができます。

補足として、-vm "D:\JDK6\bin" を eclipse.ini に追加しようとしましたが、機能しませんでした。また、「lib」ディレクトリに tools.jar が含まれていないため、JRE6 を追加しても機能しません。JDKのみが行います。

于 2012-09-03T16:31:09.760 に答える
-1

の相対位置を${java.home}/../lib/tools.jar絶対パスに変更するとC:\Program Files\Java\jdk1.6.0_29\lib\tools.jarうまくいきます。

でのみ変更する必要がありplayn/pom.xmlます。

playn-samples については、Vladiator の言うとおりです。pom ファイルが多すぎて変更できません。

于 2012-01-09T00:53:14.427 に答える