কেন মাভেন JDK 1.6 ব্যবহার করে তবে আমার জাভা-রূপান্তর 1.7


159

আমি মাভেন এবং ম্যাকস-এও নতুন।

আমার টার্মিনালে আমি সেটআপ ম্যাভেন রেখেছি, এবং সংস্করণ সেটিংস পাওয়ার সময় (ব্যবহার করে mvn -v) মনে হয় এটি জেডিকে 1.6 ব্যবহার করে, যখন আমার জেডিকে 1.7 ইনস্টল করা আছে। কোন সমস্যা?

আমি যে আদেশগুলি প্রবেশ করি সেগুলি হ'ল:

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"

2
আপনি কি আপনার पथ এবং জাভাহোম ভেরিয়েবলগুলি পোস্ট করতে পারেন?
জিনে বোয়ারস্কি

@JeanneBoyarsky ব্লুজ: helloworld নিনজা $ প্রতিধ্বনি $ JAVA_HOME ব্লুজ: helloworld নিনজা $ echo $ PATH-, / usr / বিন: / বিন: / usr / sbin: পক্ষ থেকে / sbin / usr / স্থানীয় / বিন / usr / স্থানীয় / Git / বিন
নিনজা

@ জিনে বোয়ারস্কি এই কি চান স্যার?
নিনজা

3
আমি মহিলা (তাই আমাকে "স্যার" হিসাবে ভুল হিসাবে উল্লেখ করা) এবং হ্যাঁ। দয়া করে আপনার জাভাআহোম সেট করার চেষ্টা করুন। আপনার সমস্যা এই সমস্যার সাথে সমান বলে মনে হচ্ছে: stackoverflow.com/questions/13752519/…
Jeanne Boyarsky

2
@ জিনে বোয়ারস্কি আমার অসভ্যতাটি ক্ষমা করুন given আপনি যে ইউআরএল দিয়েছেন তা হ'ল আমার দেখা সমস্যা। অনেক ধন্যবাদ ~
নিনজা

উত্তর:


227

আপনার সাথে নিম্নলিখিতগুলি যুক্ত করুন ~/.mavenrc:

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

দ্বিতীয় সমাধান:

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


হ্যাঁ, আপনি উত্তর সঠিক লোকের JAVAHOME required.I মধ্যো / etc / প্রোফাইলের পরিবর্তে হয়
নিনজা

8
ভাল, ~ / .mavenrc এ যুক্ত করা নিশ্চিত করে যে অন্যান্য অ্যাপ্লিকেশন প্রভাবিত হবে না। কেবল এমভিএন জেডিকে এই সংস্করণটি তুলেছে। :)
গৌরব বৈশ

43
JAVA_Home = $ রফতানি করুন (/ usr / lixec / java_home -v 1.7)
jla

1
.mavenrc সমাধানটি আমার পক্ষে নিখুঁতভাবে কাজ করেছে। এছাড়াও বুঝতে পেরেছিলাম যে আমি কেবল জেডিকে ১.৮ ইনস্টলড করেছি এবং জেআরই ১.৮ নয়। ধন্যবাদ গৌরব!
টিমোথি ক্লিফোর্ড

2
আপনি যদি কোনও ম্যাকটিতে জেনভ ব্যবহার করছেন তবে এটি ফাইলের export JAVA_HOME="$HOME/.jenv/versions/`jenv version-name`"জন্য হতে পারে ~/.mavenrc
এডি

46

Getোকা

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

এবং CurrentJDKনির্দেশিত লিংক আপডেট করুন

/Library/Java/JavaVirtualMachines/YOUR_JDK_VERSION/Contents/

যেমন

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

এখন এটি অবিলম্বে কাজ করা হবে।


1
কারেন্টজেডি কে সিমলিংক ট্রিকটি ম্যাভেন ৩.৩.১ এর সাথে আর কোনও কাজ করবে বলে মনে হচ্ছে না, তবে ~ / .mavenrc পরিবর্তন করে।
স্টিফান এল

41

আপনিও করতে পারেন,

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

5
ম্যাভেন জাভা ব্যবহার করে চলমান কাজ করে না 6. এটি কেবল ক্র্যাশ করে[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project {projectname}: Fatal error compiling: invalid target release: 1.7 -> [Help 1]
গ্যাভিন এস ইয়্যানসি

27

কোন জাভা সংস্করণটি সংকলন করতে হবে তা আপনি স্পষ্টভাবে মাভেনকেও বলতে পারেন। আপনি maven-compiler-pluginআপনার পোমে যোগ করার চেষ্টা করতে পারেন ।

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

আপনি যদি কোনও আইডইতে কোনও মভেন প্রকল্পটি আমদানি করেন তবে আপনার আইডইতে সম্ভবত আপনার মেভেন রানার যে ডিফল্ট সংকলকটি ব্যবহার করছেন তা ডিফল্ট সংকলকের জন্য কোনও আইভেনে সেট করা আছে।


ও , ধন্যবাদ তবে আমি শুরু করিনি। আমি কেবল 'এমভিএন-ভি' ... কারণটি হ'ল আমি জাভাহোম নিয়োগ করি না
নিনজা

নোট করুন যে কেবল আপনার কোডটি সংকলিতকেই প্রভাবিত করে। আমি এই সমস্যায় পড়েছি এবং এখানে এসেছি কারণ আমি যে বহিরাগত

ম্যাভেন জাভা ব্যবহার করে চলমান কাজ করে না 6. এটি কেবল ক্র্যাশ করে[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project {projectname}: Fatal error compiling: invalid target release: 1.7 -> [Help 1]
গ্যাভিন এস ইয়্যানসি

এটি ডিফল্ট সংকলকটির জন্য আপনার আইডিইতে মেভেন সেটিংয়ের ক্ষেত্রে কাজ করবে 1.7 এর চেয়ে কম, তবে ইনস্টল করা জেডিটি 1.7 এর চেয়ে বেশি
জন দো

9

এটা আমাকে সাহায্য করেছে। এটি কেবল আপনার pom.xML এ যুক্ত করুন।

ডিফল্টরূপে মেভেন সংকলক প্লাগইন জাভা 1.5 বা 1.6 ব্যবহার করে, আপনাকে এটি আপনার 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>

4

Eclipse ব্যবহারকারীদের জন্য। আপনার যদি এমন কোনও রান কনফিগারেশন থাকে যা উদাহরণস্বরূপ পরিষ্কার প্যাকেজ করে।

রান কনফিগারেশন প্যানেলে একটি জেআরই ট্যাব রয়েছে যেখানে আপনি কোন রানটাইমটি চালাতে হবে তা নির্ধারণ করতে পারেন। নোট করুন যে এই কনফিগারেশনটি pom.xML এ যা কিছু আছে তা ওভাররাইড করে।


2

আমি এই প্রশ্নে দেরি করছি, তবে আমি মনে করি ম্যাকসগুলিতে জেডিকে সংস্করণগুলি হ্যান্ডেল করার সর্বোত্তম উপায়টি এখানে বর্ণিত স্ক্রিপ্টটি ব্যবহার করে: http://www.jayway.com/2014/01/15/how-to-switch-jdk -version-অন-ম্যাক-OS-এক্স-বাউণ্ডুলে /


2

সামঞ্জস্যতা পরীক্ষা করুন। আমি সঙ্গে লড়াই mvn 3.2.1এবং jdk 1.6.0_37অনেক ঘন্টা জন্য। সমস্ত ভেরিয়েবল সেট করা ছিল কিন্তু কাজ করছে না। অবশেষে আমি আপগ্রেড jdk to 1.8.0_60এবং mvn 3.3.3এবং যে কাজ করেন। পরিবেশগত পরিবর্তনগুলি নিম্নলিখিত হিসাবে:

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;

1

@ মাস্টারগৌরভের সমাধান পুরোপুরি কার্যকর করছে,

আমি সাধারণত জাভা সুইচ জিনিসটি একটি 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
}

তারপরে আপনি java_lsদুটি আপনার মেশিনে উপলব্ধ জেভিএমের দুটি পেতে চালাতে java_use 1.7পারেন, জাভা এবং মাভেন উভয়ের জন্য 1.7 সংস্করণটি ব্যবহার করতে চালান ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.