简体   繁体   English

Maven with Cygwin - 错误:JAVA_HOME未正确定义

[英]Maven with Cygwin - Error: JAVA_HOME is not defined correctly

I'm trying to run Maven on cygwin. 我正试图在cygwin上运行Maven。 I've added maven to the path and my Java home looks like this: 我已经在路径中添加了maven,我的Java主页看起来像这样:

$ echo $JAVA_HOME 
/cygdrive/c/Program Files/Java/jdk1.6.0

Yet when I try to run mvn --version , I get this: 然而,当我尝试运行mvn --version ,我得到了这个:

Error: JAVA_HOME is not defined correctly.
  We cannot execute /cygdrive/c/Program Files/Java/jdk1.7.0_01/bin/java

Any idea why it's not working? 知道为什么它不起作用吗? Java -version works fine, so it's not a problem with java. Java -version工作正常,所以它不是java的问题。 I've also tried jdk1.6.0 instead. 我也尝试过jdk1.6.0。

Running which java gives, 运行which java给出的,

$ which java
/cygdrive/c/windows/system32/java

and java -version gives, java -version给出,

$ java -version
java version "1.7.0_01"
Java(TM) SE Runtime Environment (build 1.7.0_01-b08)
Java HotSpot(TM) Client VM (build 21.1-b02, mixed mode, sharing)

If I run mvn.bat instead of mvn , I didn't have this problem. 如果我运行mvn.bat而不是mvn ,我没有这个问题。

So, since Cygwin will run the mvn file, I replaced this mvn file with a softlink ( ln -s mvn.bat mvn ) to the batch file. 因此,由于Cygwin将运行mvn文件,我将此mvn文件替换为软链接( ln -s mvn.bat mvn )到批处理文件。 This way, running mvn will silently run the mvn.bat which handles these problems gracefully. 这样,运行mvn将默默运行mvn.bat ,它可以优雅地处理这些问题。

Anyone Using Cygwin and Maven, here's exactly what you need: 任何人使用Cygwin和Maven,这正是你需要的:

In your Cygwin bash prompt: 在您的Cygwin bash提示符中:

$ vim ~/.bashrc

or: 要么:

$ nano ~/.bashrc

(Which ever you fancy...) (你喜欢哪个...)

Append the following: 附加以下内容:

alias mvn=mvn.bat

Save and Exit. 保存并退出。 Then run: 然后运行:

$ source ~/.bashrc

Now you should be able to use the mvn command as you do in cmd prompt. 现在,您应该可以像在cmd提示符中一样使用mvn命令。

Cygwin uses a dos console to execute Maven builds ( mvn.bat ). Cygwin使用dos控制台来执行Maven构建( mvn.bat )。

Set your Java home to the C:\\Program Files\\Java\\jdk1.7.0_01 location. 将Java主目录设置为C:\\Program Files\\Java\\jdk1.7.0_01位置。

I was facing the same problem while running gradle from cygwin tool. 从cygwin工具运行gradle时我遇到了同样的问题。

I used to set the Java home including the bin folder: 我曾经设置过包含bin文件夹的Java home:

C:\Program Files\Java\jdk1.7.0_67\bin

But later I realized that some application do not recognize if you include bin folder, so I changed the class path to C:\\Program Files\\Java\\jdk1.7.0_67 and it started working. 但后来我意识到,如果你包含bin文件夹,某些应用程序无法识别,所以我将类路径更改为C:\\Program Files\\Java\\jdk1.7.0_67并开始工作。

JAVA_HOME/cygdrive/c/Progra~1/Java/jdk1.6.0可能会有所帮助。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM