Moje listy plików pom
<project>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.0</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12.4</version>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
...
Jednak mvn clean install
dostaję
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] Failure executing javac, but could not parse the error:
javac: invalid target release: 1.7
Usage: javac <options> <source files>
/usr/bin/java -version
jest ( which java
wskazuje tutaj)
java version "1.7.0_10"
Java(TM) SE Runtime Environment (build 1.7.0_10-b18)
Java HotSpot(TM) 64-Bit Server VM (build 23.6-b04, mixed mode)
javac
wskazuje również na poprawną wersję Java
/usr/bin/javac -> /Library/Java/JavaVirtualMachines/jdk1.7.0_10.jdk/Contents/Home/bin/javac
Na tej maszynie używam zsh
( echo $0
zwroty -zsh
)
W moim .zshrc
zdefiniowałem:
33 # HOME
34 JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_10.jdk/Contents/Home
35 SCALA_HOME=/Library/Scala/current
36 FORGE_HOME=~/tools/forge/
37
38 # PATH
39 PATH="/Library/Frameworks/Python.framework/Versions/3.2/bin:${PATH}"
40 PATH=${PATH}:${JAVA_HOME}/bin
41 PATH=${PATH}:/bin/
42 PATH=${PATH}:/sbin/
43 PATH=${PATH}:/usr/bin/
44 PATH=${PATH}:/usr/sbin/
45 PATH=${PATH}:/opt/local/bin/
46 PATH=${PATH}:/opt/local/sbin/
47 PATH=${PATH}:/usr/local/git/bin
48 PATH=${PATH}:/usr/local/git/sbin
49 PATH=${PATH}:/Applications/Xcode.app/Contents/Developer/usr/bin
50 PATH=${PATH}:${SCALA_HOME}/bin
51 PATH=${PATH}:${FORGE_HOME}/bin
52
53 export PATH
Kiedy biegam mvn clean install --debug
, widzę, że w rzeczywistości używam Java 6
1 Apache Maven 3.0.3 (r1075438; 2011-02-28 11:31:09-0600)
2 Maven home: /usr/share/maven
3 Java version: 1.6.0_35, vendor: Apple Inc.
4 Java home: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Gdzie można to zdefiniować? Mam źródło (d) mój .zshrc wiele razy.
/usr/bin
pierwszej pozycji na liście katalogów. Spróbujjavac -version
bez określania katalogu.javac 1.7.0_10
echo $JAVA_HOME
ci powie?--debug
, powinien on podać dokładną linię poleceń, której używa do uruchomieniajavac
(wraz z mnóstwem innych rzeczy). Co to mówi?Odpowiedzi:
Sprawdź
mvn
skrypt w swojej instalacji maven, aby zobaczyć, jak buduje polecenie. Być może ty lub ktoś inny zakodowałJAVA_HOME
tam na stałe i zapomniał o tym.źródło
mvn
Skrypt nie był zgodny z mojej instalacji OSX z Oracle JDK 7, a ja nie zrobić jej utworzeniu (wygląda skrypt do folderu niczego wyjątkowegoLibrary/Java/JavaVirtualMachines/CurrentJDK
, które nie istnieją dla mnie (co nie istniał tojdk1.7.0_25.jdk
zamiastCurrentJDK
). Nie elegancka poprawka, ale właśnie zakodowałem eksport i teraz działa (PS: maven na OSX jest na/usr/share/maven/bin/mvn
)/usr/local/bin/mvn
spróbuj użyć nowszej wersji wtyczki kompilatora maven:
Ponadto, określanie kodowania plików źródłowych w maven jest lepsze globalnie:
EDYCJA : Ponieważ ta odpowiedź wciąż przyciąga uwagę, chciałbym tylko zwrócić uwagę, że najnowsze wartości (od ostatniej edycji) to 3,2 dla wtyczki kompilatora maven i 1,8 dla javy, ponieważ pytania dotyczące kompilacji kodu Java 8 przez maven są powiązane pojawi się wkrótce :-)
źródło
Miałem ten sam problem i aby go rozwiązać, śledzę ten artykuł na blogu: http://www.mkyong.com/java/how-to-set-java_home-environment-variable-on-mac-os-x/
specjalne wskazówki dla @mkyong
EDYCJA: Teraz używam: jEnv + sdkman
źródło
Sprawdź pom.xml dla poniższych tagów
powinien wskazywać wymaganą wersję jdk
źródło
Musisz sprawdzić wersję Mavena:
Znajdziesz wersję Java, której Maven używa do kompilacji. W razie potrzeby może być konieczne zresetowanie JAVA_HOME.
źródło
Miałem ten sam problem. Stwierdziłem, że dzieje się tak, ponieważ skrypt Maven patrzy na łącze CurrentJDK poniżej i znajduje JDK 1.6. Nawet jeśli zainstalujesz najnowszy pakiet JDK, problem nie zostanie rozwiązany. Chociaż mogłeś po prostu ustawić JAVA_HOME w swoim skrypcie $ HOME / .bash_profile, zdecydowałem się naprawić dowiązanie symboliczne w następujący sposób:
Zauważ, że CurrentJDK wskazuje na 1.6.0.jdk
Aby to naprawić, uruchomiłem następujące polecenia (powinieneś sprawdzić zainstalowaną wersję i odpowiednio dostosować).
źródło
Diagnostyka:
Możesz sprawdzić, której wersji Java używa Maven, uruchamiając „mvn --version”
Rozwiązanie dla Debiana:
Skrypt mvn ustawia wewnętrznie zmienną env JAVA_HOME, wyszukując javac (czyli javac). Dlatego też, jeśli masz wiele wersji Java zainstalowanych jednocześnie, np. JDK 6 i JDK 7 i korzystasz z systemu Debian Alternatives, aby wybierać między nimi, nawet jeśli zmieniłeś alternatywę dla "java" na JDK 7, mvn nadal będzie używać JDK 6. Ty trzeba też zmienić alternatywę dla „javac”. Na przykład:
EDYTOWAĆ:
Właściwie jeszcze lepszym rozwiązaniem jest użycie alternatyw update-java (np.)
jak opisano szczegółowo w https://wiki.debian.org/JavaPackage , ponieważ zmieni to wszystkie alternatywy dla różnych narzędzi Java (jest ich kilkanaście).
źródło
Czy mógłbyś wypróbować nowszą wtyczkę; na stronie maven:
Widziałem też:
źródło
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.0:compile (default-compile) on project divs: Fatal error compiling: invalid target release: 1.7 -
Spróbuj zmienić ustawienia kompilatora Java we Właściwościach w Eclipse-
Idź do: Preferencje-> Java-> Kompilator-> Poziom zgodności kompilatora-> 1.7 Zastosuj OK
Zrestartuj IDE.
Potwierdź ustawienie kompilatora dla projektu - Idź do: Właściwości projektu -> Kompilator Java -> Odznacz (Użyj zgodności ze środowiska wykonawczego „JavaSE-1.6” na ścieżce kompilacji java) i wybierz z listy rozwijanej 1.7. (Zignoruj, jeśli już 1.7)
Zrestartuj IDE.
Jeśli problem nadal występuje - uruchom poszczególne przypadki testowe za pomocą polecenia w terminalu-
źródło
Nie jestem pewien, jaki system operacyjny jest tutaj używany, ale możesz wyeliminować wiele wersji java, które mogą powodować un debian / ubuntu z alternatywami update-java, aby ustawić domyślny jvm w całym systemie.
Aby ustawić nowy, użyj:
Nie ma potrzeby ustawiania JAVA_HOME dla większości aplikacji.
źródło
kliknij prawym przyciskiem myszy projekt w eclipse i otwórz „Run Configurations”. Sprawdź tam wersję jre. czasami nie zmieni się to domyślnie w eclipse, nawet po zmianie wersji w ścieżce budowania.
źródło
W przypadku określonej kompilacji, która wymaga (innej niż domyślna
/etc/alternatives/java
) maszyny JVM, rozważ przedrostekmvn
polecenia wJAVA_HOME
ten sposób:Tutaj zakładamy, że domyślną jest Java 8, podczas gdy dla konkretnego projektu wymagamy Java 7.
źródło
{JAVA_1_4_HOME} / bin / javacy możesz też spróbować ...
źródło
Ok, sam też rozwiązałem ten problem. Ważniejsze jest twoje JAVA_HOME, jeśli nie masz niższej lub żadnej wersji w porównaniu do właściwości źródła / celu z wtyczki Maven, otrzymasz ten błąd.
Upewnij się, że masz dobrą wersję w swoim JAVA_HOME i umieść ją w swojej PATH.
źródło
Być może podajesz niewłaściwą wersję java. java -version (w twoim terminalu), aby sprawdzić wersję java, której używasz. Przejdź do maven-compile-plugin, aby uzyskać najnowszą wersję kompilatora maven Twoja wtyczka może wyglądać tak, jeśli używasz java 6 a najnowsza wersja wtyczki kompilatora maven to 3.1
źródło
Żadna z poprzednich odpowiedzi nie rozwiązała całkowicie mojego przypadku użycia.
Potrzebne do usunięcia budowanego katalogu. Czysty. A następnie zainstaluj ponownie. Wygląda na cichy problem z uprawnieniami.
źródło
Miałem ten problem w IntelliJ IDEA 14, dopóki nie przeszedłem do menu Plik -> Struktura projektu, zmieniając SDK projektu na 1.7 i poziom języka projektu na 7.
źródło
Miałem ten problem podczas pracy z eclipse, musiałem zmienić ścieżkę budowania projektu tak, aby odnosiła się do jre 7
źródło