Ik ben nieuw bij maven, en ook bij MacOS.
Ik heb maven ingesteld in mijn terminal, en bij het ophalen van de versie-instellingen (met behulp van mvn -v
) lijkt het erop dat het JDK 1.6 gebruikt, terwijl ik JDK 1.7 heb geïnstalleerd. Is er iets mis?
De commando’s die ik invoer zijn deze:
blues:helloworld Ninja$ java -version
java version "1.7.0_05" Java(TM) SE Runtime Environment (build 1.7.0_05-b06) Java HotSpot(TM) 64-Bit Server VM (build 23.1-b03, mixed mode)`
blues:helloworld Ninja$ mvn -v
Apache Maven 3.1.0 (893ca28a1da9d5f51ac03827af98bb730128f9f2; 2013-06-28 10:15:32+0800) Maven home: /usr/local/Cellar/maven/3.1.0/libexec Java version: 1.6.0_51, vendor: Apple Inc. Java home: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home Default locale: zh_CN, platform encoding: EUC_CN OS name: "mac os x", version: "10.8.4", arch: "x86_64", family: "mac"
Antwoord 1, autoriteit 100%
voeg het volgende toe aan uw ~/.mavenrc
:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/{jdk-version}/Contents/Home
Tweede oplossing:
echo export "JAVA_HOME=\$(/usr/libexec/java_home)" >> ~/.bash_profile
Antwoord 2, autoriteit 20%
Kom in
/System/Library/Frameworks/JavaVM.framework/Versions
en update de CurrentJDK
symbolische link zodat deze verwijst naar
/Library/Java/JavaVirtualMachines/YOUR_JDK_VERSION/Contents/
Bijvoorbeeld
cd /System/Library/Frameworks/JavaVM.framework/Versions
sudo rm CurrentJDK
sudo ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/ CurrentJDK
Nu zal het meteen werken.
Antwoord 3, autoriteit 18%
U kunt ook doen,
<properties>
...
<!-- maven-compiler-plugin , aka JAVA Compiler 1.7 -->
<maven.compiler.target>1.7</maven.compiler.target>
<maven.compiler.source>1.7</maven.compiler.source>
...
</properties>
Antwoord 4, autoriteit 12%
Je kunt maven ook expliciet vertellen voor welke Java-versie moet worden gecompileerd. Je kunt proberen de maven-compiler-plugin
toe te voegen aan je pom.
<project>
[...]
<build>
[...]
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
[...]
</build>
[...]
</project>
Als je een maven-project in een IDE hebt geïmporteerd, is er waarschijnlijk een maven-instelling in je IDE voor de standaardcompiler die je maven runner gebruikt.
Antwoord 5, autoriteit 4%
Het heeft me geholpen. Voeg het gewoon toe aan je pom.xml.
Standaard gebruikt de maven compiler-plug-in Java 1.5 of 1.6, je moet het opnieuw definiëren in je pom.xml.
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
Antwoord 6, autoriteit 2%
Voor Eclipse-gebruikers.
Als u bijvoorbeeld een Run-configuratie heeft die het pakket opschoont.
In het deelvenster Configuratie uitvoeren is er een JRE-tabblad waar u kunt specificeren tegen welke runtime het moet worden uitgevoerd.
Merk op dat deze configuratie voorrang heeft op alles wat in de pom.xml staat.
Antwoord 7
Ik ben laat met deze vraag, maar ik denk dat de beste manier om JDK-versies op MacOS af te handelen is door het script te gebruiken dat wordt beschreven op: http://www.jayway.com/2014/01/15/how-to-switch- jdk-version-on-mac-os-x-maverick/
Antwoord 8
Controleer de compatibiliteit. Ik worstelde vele uren met mvn 3.2.1
en jdk 1.6.0_37
. Alle variabelen waren ingesteld, maar werkte niet. Uiteindelijk heb ik jdk to 1.8.0_60
en mvn 3.3.3
en dat werkte. Omgevingsvariabelen als volgt:
JAVA_HOME=C:\ProgramFiles\Java\jdk1.8.0_60
MVN_HOME=C:\ProgramFiles\apache-maven\apache-maven-3.3.3
M2=%MVN_HOME%\bin extend system level Path- ;%M2%;%JAVA_HOME%\bin;
Antwoord 9
De oplossing van @MasterGaurav werkt perfect.
Normaal gesproken plaats ik de Java switch-instructie in een zsh-functie:
alias java_ls='/usr/libexec/java_home -V 2>&1 | grep -E "\d.\d.\d[,_]" | cut -d , -f 1 | colrm 1 4 | grep -v Home'
function java_use() {
export JAVA_HOME=$(/usr/libexec/java_home -v $1)
echo export "JAVA_HOME=$(/usr/libexec/java_home -v $1)" > ~/.mavenrc
export PATH=$JAVA_HOME/bin:$PATH
java -version
}
U kunt java_ls
uitvoeren om alle beschikbare JVM’s op uw computer te krijgen,
en vervolgens java_use 1.7
om 1.7 te gebruiken voor zowel Java als Maven.