Postępowałem zgodnie z samouczkiem wprowadzającym, ale utknąłem po zaimportowaniu projektu Playn za pomocą Maven. Używam Eclipse Indigo na 64-bitowym systemie Windows 7.
Wszystkie zaimportowane projekty mają ten sam błąd:
Missing Artifact com.sun:tools:jar in all the pom.xml files.
Po kilku godzinach przeszukiwania forów próbowałem:
Instalowanie najnowszej wersji Java 1.6.029 Zmiana mojej JAVA_HOME
zmiennej środowiskowej tak, aby wskazywała na \program files\Java\jdk1.6_029
Zmiana preferencji środowiska Java Eclipse w celu korzystania ze środowiska JRE jdk1.6_029
.
Naprawdę chciałbym poeksperymentować z playn, ale dlaczego jest kilka postów, nie mogę znaleźć odpowiedzi na consenus na temat rozwiązania. Niektórzy mówią, że Sun usunął coś z 64-bitowego jdk, inni mówią, że musisz edytować swoje pliki xml, wiele osób powiedziało, że zmieniłeś swoje JAVA_HOME
, a jeszcze inne, że musisz zmienić opcje VM dla Eclipse.
Każda pomoc w wyjaśnieniu tego byłaby doceniona i prawdopodobnie przydatna dla wielu, ponieważ nie mam tutaj szczególnie dziwnej konfiguracji.
(edytuj) Oto pom.xml w pierwszym projekcie. Błąd flag Eclipse w wierszu, który mówi:
<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>
Odpowiedzi:
Właśnie opublikowałem to pytanie dotyczące tego samego problemu i tego, jak go rozwiązałem, ale wkleję je (i rozwinę) również tutaj, ponieważ wydaje się bardziej odpowiednie.
Miałem ten sam problem podczas używania Eclipse w Windows 7, nawet gdy usunąłem JRE z listy JRE w ustawieniach Eclipse i po prostu miałem tam JDK.
To, co musiałem zrobić (jak wspomniałeś w swoim pytaniu), to zmodyfikowanie wiersza poleceń dla skrótu, którego używam do uruchomienia Eclipse, aby dodać do niego argument -vm w następujący sposób:
-vm "T:\Program Files\Java\jdk1.6.0_26\bin"
Oczywiście można to dostosować tak, aby wskazywało na katalog bin Twojej instalacji JDK. To powoduje, że Eclipse działa przy użyciu JDK zamiast JRE, a następnie jest w stanie znaleźć
tools.jar
poprawnie.Uważam, że ma to związek z tym, jak Eclipse znajduje swoje domyślne środowisko JRE, gdy żadne nie jest określone. Domyślam się, że preferuje JRE od JDK (dlaczego, nie wiem) i wybiera pierwszy zgodny JRE, który znajdzie. A jeśli znika z kluczy rejestru systemu Windows, jak sugeruje odpowiedź Vladiat0r, najpierw szuka
HKLM\Software\JavaSoft\Java Runtime Environment
klucza zamiastHKLM\Software\JavaSoft\Java Development Kit
klucza.źródło
javaw.exe
do tej ścieżki (więc w całości-vm "T:\Program Files\Java\jdk1.8.0_66\bin\javaw.exe"
:);Miałem ten sam problem podczas tworzenia prostej aplikacji serwisowej, w moim przypadku musiałem dodać wtyczkę codehous, aby pobrać biblioteki jaxws. Jednak maven pom wciąż pytał o plik jar z narzędziami.
Muszę powiedzieć, że powyższe komentarze są poprawne, w pliku pom możesz zawrzeć poniższy wpis:
<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>
Ale co się stanie, gdy będziesz musiał wdrożyć instancję produkcyjną? Możesz zastąpić ścieżkę odwołaniem do systemowej zmiennej środowiskowej, ale to nadal nie wygląda dobrze, przynajmniej dla mnie.
Znalazłem inne rozwiązanie w komentarzu StackOverflow:
Problem z artefaktem 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>
Sugerują dołączenie oświadczenia o wykluczeniu dla słoika z narzędziami i działa. Podsumowując: możesz uwzględnić regułę wykluczenia w swojej zależności i uniknąć problemu z plikiem tool.jar:
<exclusions> <exclusion> <artifactId>tools</artifactId> <groupId>com.sun</groupId> </exclusion> </exclusions>
źródło
pom.xml
nie działa dla mnie.Napotkałem ten sam problem i sposób, w jaki byłem w stanie go rozwiązać, polegał na dodaniu lokalizacji zależności
tools.jar
dopom.xml
. Tak jak to:<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>
Upewnij się, że zmieniłeś miejsce,
<systemPath>
w którym kiedykolwiek znajduje się plik tools.jar.źródło
Żadna z pozostałych odpowiedzi nie zrobiła tego za mnie. To, co zrobiłem, to sprawdzenie "Hierarchii zależności" w pom.xml w eclipse, gdzie podanie 'narzędzi' filtra ujawniło, że mam rzeczywistą zależność od tools.jar:
Więc winowajcą dla mnie było to:
<dependency> <groupId>com.github.markusbernhardt</groupId> <artifactId>robotframework-selenium2library-java</artifactId> <version>1.4.0.7</version> <scope>test</scope> </dependency>
Dodanie wykluczenia naprawiło to:
<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>
Wydaje się, że wykluczenie nie ma żadnych wad.
źródło
To samo dotyczy mnie i Windows 7. Skończyło się na dodaniu dwóch wierszy do
eclipse.ini
:-vm C:\Program Files\Java\jdk1.6.0_35\bin
Próbowałem
%JAVA_HOME%
tam użyć , ale to nie zadziałało.źródło
-vmargs
wierszem, ponieważ wszystko, co przeszło, zostanie zinterpretowane jako argumenty dotyczące uruchamiania maszyny wirtualnej. A więc: tuż przed tym!-vm
przed-vmargs
jest kluczem !. Dziękuję Ci!Rozwiązałem ten problem w ustawieniach Eclipse 4.3 - tylko dodając biblioteki JDK do bibliotek JRE.
Idź do windows -> ustawienia -> Java -> zainstalowane JRE -> wybierz JDK i kliknij Edytuj -> kliknij Dodaj zewnętrzne pliki JAR i dodaj tools.jar (umieszczone w JDK / lib)
źródło
Sprawdź wersję JDK na swoim komputerze i na
pom.xml
obu powinna być taka sama<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>
źródło
Jeśli ten problem nadal występuje, może to być spowodowane pakietem JDK w wersji równej lub wyższej niż 11.
tools.jar
Archiwum zostało usunięte z folderu lib w tych JDK'S (zobacz tę odpowiedź do podobnej kwestii). W takim przypadku spróbuj użyć innych wersji bibliotek, które nie zależą odcom.sun:tools
biblioteki.źródło
Po pewnym czasie walki w końcu udało mi się to wykorzystać
eclipse.ini
zamiast wiersza poleceń. Po ostatecznym przeczytaniu dokumentacji zdałem sobie sprawę, że argument -vm musi znajdować się w osobnym wierszu, bez cudzysłowu i przed jakimikolwiek -vmargs:-vm C:\Program Files\Java\jdk1.7.0_45\bin\javaw.exe
źródło
Mam podobny błąd. Dzieje się tak, ponieważ JDK nie jest prawidłowo ustawiony podczas zaćmienia. Cucumber potrzebuje JDK wraz z JRE, więc dodaj poniższą zależność w swoim pom.xml
<dependency> <groupId>com.sun</groupId> <artifactId>tools</artifactId> <version>1.6</version> <scope>system</scope> <systemPath>C:\Program Files\Java\jdk1.8.0_101\lib\tools.jar</systemPath> </dependency>
źródło
W efektywnej zakładce POM plików pom widzę następującą ścieżkę pochodną:
C:\Program Files\Java\jre6/../lib/tools.jar
i myślę, że nie jest to prawidłowa ścieżka w systemie Windows. Próbowałem skopiować plik tools.jar w folderze jre6 / lib, a także w Javie / lib bez powodzenia.Wartość „C: \ Program Files \ Java \ jre6” pochodzi z rejestru
HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\1.6.0_30 HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\1.6
I ustaw klucz JavaHome na miejsce, w którym jest zainstalowane środowisko JRE jdk. Następnie wszystkie błędy kompilatora zniknęły.
Ponowna instalacja JDK tego nie rozwiązała. Ustawienie zmiennej środowiskowej systemu JAVA_HOME lub java.home nie pomogło.
Inną alternatywą, jaką widziałem, jest dodanie zależności z właściwą ścieżką w każdym pliku pom xml, ale playn-samples ma wiele plików, których edycja jest absurdalna.
To są skuteczne wyniki POM, które pokazują ZŁĄ ścieżkę!
<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>
źródło
Dodaj tę zależność w pliku pom.xml. Mam nadzieję, że to pomoże.
We
<systemPath>
właściwości musisz wpisać ścieżkę do biblioteki jdk.<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>
źródło
Skończyło się na poprawce eclipse.ini:
openFile -vm (Your Java Home JDK here)
Na przykład
-vm C:\Java\JDK\1.6
.Musiałem też zmienić JRE na JDK:
W Eclipse IDE przejdź do:
źródło
-vm
końca wiersza po , umieść ścieżkę Java SDK w następnym wierszu i umieść wszystkie nowo dodaną-vm
flagę przed--vmargs
weclipse.ini
pliku.Jak stwierdzili inni plakaty, problem dotyczy środowiska JRE, którego używa eclipse, nie mogąc znaleźć słoika z narzędziami. Rozwiązałem problem, idąc w nieco innym kierunku niż to, co zostało powiedziane powyżej, a było to spowodowane sposobem, w jaki moje projekty i środowisko.
Eclipse 4.5 wymaga co najmniej Java 7 do wykonania, więc mam skonfigurowany system do korzystania ze środowiska JRE Java 8 znajdującego się w C: \ java \ jre1.8.0_45.
Następnie używam pliku POM, który zakłada, że używam JDK Java 6.
<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>
Nie wolno mi zmieniać pliku POM, więc musiałem zrobić trochę jiggery pokery. Skopiowałem plik tools.jar z mojego JDK Java 6, utworzyłem katalog C: \ java \ lib i wkleiłem go tam. Następnie ponownie uruchomiłem Eclipse i wyczyściłem projekt. A błędy VOILA zniknęły.
Nie jest to eleganckie rozwiązanie i pomyślałbym, że właściwym rozwiązaniem byłaby zmiana sposobu ustawienia POM, ale jak mi się to nie udało, to działa.
źródło
Miałem ten sam problem na Windows 7 i Eclipse 3.7, udało mi się go naprawić, uruchamiając
Możesz uruchomić cmd i uruchomić eclipse w ten sposób, lub możesz edytować swój skrót i dodać -vm "D: \ JDK6 \ bin" jako argument w "sekcji docelowej".
Na marginesie próbowałem również dodać -vm "D: \ JDK6 \ bin" do eclipse.ini, ale nie zadziałało. Dodanie JRE6 nie zadziała, ponieważ NIE zawiera on tools.jar w swoim katalogu „lib”. Tylko JDK to robi.
źródło
Po wypróbowaniu wszystkich powyższych nadal miałem ten sam problem.
Następnie wypróbowałem następujące,
Otwórz wiersz poleceń i wpisz java -version. Pokazał mi JRE w wersji 1.8.
Otwórz wiersz poleceń i udaj się do lokalizacji katalogu bin JDK 1.7 i wpisz java -version. Tym razem pokazał poprawnie 1.7.
Następnie po przekopaniu się w kilku miejscach stwierdziłem, że oprócz powyższych lokalizacji są dodatkowe lokalizacje dla środowiska uruchomieniowego Java.
Rejestr
Istnieje również klucz rejestru, w którym podana jest lokalizacja środowiska JRE
Zmieniłem wpisy tutaj, aby wskazywały na JDK 1.7
Dane programu
Katalog „C: \ ProgramData \ Oracle \ Java \ javapath” znajduje się w zmiennej środowiskowej PATH i zawiera skróty do java, javaw itp. Celem tych skrótów było wszystkie JRE 1.8. ( Myślę, że to był główny problem ) Zmieniłem skróty, aby wskazywały na prawidłowe pliki exe JDK.
Kiedy to wszystko zostało zrobione. Otworzyłem eclipse, wszystkie błędy jdk.tools pom.xml zniknęły.
źródło
Mam ten problem i okazuje się, że JBossDevStudio 9.1 na Windows jest programem 32-bitowym. Eclipse, a tym samym JBossDevStudio, nie działa z niewłaściwym typem JVM. 64-bitowe zaćmienie wymaga 64-bitowej maszyny JVM, 32-bitowe zaćmienie wymaga 32-bitowej maszyny JVM. W związku z tym skonfigurowanie Eclipse do działania z zainstalowanym 64-bitowym pakietem JDK nie działało.
Zainstalowanie 32-bitowego JDK i uruchomienie Eclipse z tego rozwiązania rozwiązało problem.
Przynajmniej w przypadku jednego z moich projektów, inny, w którym próbowałem skonfigurować JDK środowiska wykonawczego we właściwościach projektu Eclipse, jest nadal uszkodzony.
źródło
Rozwiązałem problem, odinstalowując JRE z systemu i pozostawiając tylko JDK. Ponowna instalacja JDK nie wystarczy, ponieważ instalator Oracle JDK instaluje zarówno JDK, jak i JRE
Swoją drogą wydaje mi się, że ten błąd jest odpowiedzialny za kłopoty: java.home środowiska Eclipse JRE jest używane zamiast kompilacji JRE
źródło
W moim przypadku wykonywałem Maven Build z Eclipse Run Configurations. Nawet po zmianie domyślnej konfiguracji JRE, aby wskazywała na folder instalacyjny JDK, problem nie został rozwiązany. Powodem jest to, że w Maven Build - Run Configuration znajduje się zakładka JRE (patrz obrazek poniżej). I nadal wskazywał na moją instalację JRE. Zmieniłem go, aby wskazywał na instalację JDK, a następnie uruchomiłem kompilację Maven. Tym razem się udało. wprowadź opis obrazu tutaj
źródło
Rozumiemy, dlaczego wystąpił ten problem:
Polecenie Maven "mvn -version" zwraca powyżej wyniku.
Jeśli nie określisz zmiennej środowiskowej JAVA_HOME, maven pobiera ścieżkę środowiska wykonawczego Java jako „C: \ Program Files \ Java \ jre1.8.0_221”. A potem maven zakłada, że ta ścieżka to JAVA_HOME. Dlatego podczas budowania aplikacji z wiersza poleceń lub dowolnego środowiska IDE, maven szuka pliku tools.jar w ścieżce „% JAVA_HOME% .. \ lib \ tools.jar”.
tools.jar znajduje się w ścieżce JDK, więc musimy wspomnieć o tym w maven przed jego użyciem. Obecnie maszyny są budowane z już dostępnym jre, ale jdk jest wymagany tylko do programowania. Może to być powód, dla którego maven automatycznie wybiera ścieżkę Jre.
Aby uzyskać dodatkową pomoc, przeczytaj kod mvn.cmd dostępny w ścieżce instalacji mavena.
źródło
Problem polega na tym, że system nie może znaleźć pliku tools.jar
Więc najpierw sprawdź, czy plik znajduje się w instalacji JDK katalogu.
Wprowadź poniższy wpis w POM.xml, jak słusznie wskazywali inni
<dependency> <groupId>com.sun</groupId> <artifactId>tools</artifactId> <version>1.6</version> <scope>system</scope> <systemPath>C:\Program Files\Java\jdk1.8.0_241\lib\tools.jar</systemPath> </dependency>
następnie wykonaj poniższe czynności, aby usunąć problem
1) Kliknij prawym przyciskiem myszy swój projekt
2) Kliknij Ścieżka budowania
Jak na poniższym obrazku, wybierz domyślne środowisko JRE obszaru roboczego i kliknij Zakończ.
źródło
Zmiana „Zainstalowanych JRE” w „Preferencjach -> Java -> Zainstalowane JRE” na JDK home zadziałała.
Do Twojej wiadomości - używam JDK 1.8.
źródło
Jeśli używasz openjdk, musisz zainstalować pakiet openjdk-6-sdk.
źródło
Zmiana względnej lokalizacji
${java.home}/../lib/tools.jar
na absolutną ścieżkęC:\Program Files\Java\jdk1.6.0_29\lib\tools.jar
działa dla mnie.Powinieneś tylko zmienić to w
playn/pom.xml
.Jeśli chodzi o próbki playn, Vladiator ma rację, to zbyt wiele plików pom, by je zmienić.
źródło