Dlaczego Maven używa JDK 1.6 ale moja java-Wersja to 1.7

Jestem nowy w maven, a także w MacOS.

Mam ustawiony maven w moim terminalu, a po pobraniu ustawień wersji (za pomocą mvn -v) wydaje się, że używa JDK 1.6, podczas gdy ja mam zainstalowany JDK 1.7. Coś nie tak?

Polecenia, które wprowadzam to:

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"
Author: Lii, 2013-09-15

9 answers

Dodaj do swojego ~/.mavenrc:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/{jdk-version}/Contents/Home

Drugie Rozwiązanie:

echo export "JAVA_HOME=\$(/usr/libexec/java_home)" >> ~/.bash_profile

 219
Author: Gaurav Vaish,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-28 13:50:09

Get into

/System/Library/Frameworks/JavaVM.framework/Versions

I zaktualizuj dowiązanie symboliczne CurrentJDK, aby wskazywało na

/Library/Java/JavaVirtualMachines/YOUR_JDK_VERSION/Contents/

Np.

cd /System/Library/Frameworks/JavaVM.framework/Versions
sudo rm CurrentJDK
sudo ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/ CurrentJDK

Teraz będzie działać natychmiast.

 45
Author: Oskar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-17 12:35:55

Możesz też zrobić,

<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>
 38
Author: DEREK LEE,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-16 17:37:16

Możesz również jawnie powiedzieć mavenowi, dla której wersji Javy ma się skompilować. Możesz spróbować dodać maven-compiler-plugin do swojego 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>

Jeśli zaimportowałeś projekt Mavena do IDE, to prawdopodobnie w Twoim IDE jest ustawienie Mavena dla domyślnego kompilatora, którego używa Twój Maven runner.

 26
Author: redFIVE,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-15 15:24:49

To mi pomogło. Po prostu dodaj go do swojego pom.xml.

Domyślnie wtyczka kompilatora maven używa Javy 1.5 lub 1.6, musisz ją przedefiniować w swoim 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>
 8
Author: Sergey Luchko,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-24 15:31:02

Dla Użytkowników Eclipse. Jeśli masz konfigurację Run, która na przykład czyści pakiet.

W panelu konfiguracyjnym Uruchom znajduje się zakładka JRE, w której można określić, dla którego środowiska runtime ma być uruchomiony. Zauważ, że ta konfiguracja nadpisuje to, co jest w pom.xml.

 3
Author: Yonatan Abrego,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-11 19:18:35

Jestem spóźniony na to pytanie, ale myślę, że najlepszym sposobem obsługi wersji JDK na MacOS jest użycie skryptu opisanego na stronie: http://www.jayway.com/2014/01/15/how-to-switch-jdk-version-on-mac-os-x-maverick/

 2
Author: Yuri,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-04 09:11:11

Proszę sprawdzić zgodność. Zmagałem się z mvn 3.2.1 i jdk 1.6.0_37 przez wiele godzin. Wszystkie zmienne zostały ustawione, ale nie działały. W końcu ulepszyłem jdk to 1.8.0_60 i mvn 3.3.3 i to zadziałało. Zmienne środowiskowe w następujący sposób:

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;
 2
Author: Vikas Singh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-27 00:35:59

@MasterGaurav 's solution is perfectly working,

Normalnie wstawiam java switch do funkcji zsh:

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
}

Następnie można uruchomić java_ls dwa uzyskać wszystkie dostępne jvm na komputerze, uruchom java_use 1.7, aby użyć wersji 1.7 zarówno dla Javy, jak i Mavena.

 1
Author: Wei Qiu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-18 16:44:46