2014-05-22 48 views
4

我剛剛下載了cygwin來運行一些java程序,我需要設置java。我試圖下載標準的Linux軟件包,並得到了錯誤Cannot execute binary files讓Java在Cygwin工作

一些研究,我想我不得不把它指向我的窗口java文件夾後,所以我跑

export PATH=$PATH:"/cygdrive/C/Program Files (x86)/Java/jdk1.7.0_51/bin" 

,似乎工作(Java -version顯示我的java信息)。然而,它似乎搞砸了我的Linux bash設置,之後我不能做基本的東西,比如ls,sh等。它給出命令未找到錯誤,唯一的方法是將PATH變量更改回我的cygwin文件夾。

我怎麼能得到java「安裝」在cygwin?

+0

我很高興錯了,但我總是懷疑在cygwin路徑中有空格。所以我通常將Java安裝到C:/ Java/...以避免路徑名稱中的空格出現任何問題。另外,你有你的JAVA_HOME環境變量集嗎? –

+0

yup - $ echo $ JAVA_HOME cygdrive/C/Program Files(x86)/Java/jdk1.7。0_51 –

+0

你確定你沒有使用java -version運行linux二進制文件,那麼「哪個java」打印什麼?您的PATH無效,「echo $ PATH」打印是什麼?這不應該搞砸你的PATH,即使在「export PATH = $ PATH:/ foo/bar/baz」之後它也應該工作。 – Mikuz

回答

0

你不需要cygwin在windows中運行java。您可以設置路徑環境變量以啓用它。既然你已經安裝了java,你就已經有一半了。

1. Right-click on 'My Computer' and select 'Properties'.(i.e. go to System Properties) 
2. Click on the 'Environment variables' button under the 'Advanced' tab. 
3. Alter the 'Path' variable so that it also contains the path to the Java executable. 
    Example, if the path is currently set to 'C:\WINDOWS\SYSTEM32', then change your path to read 'C:\WINDOWS\SYSTEM32;C:\Program Files (x86)\Java\jdk1.7.0_51\bin'. 

一旦你完成這些步驟,你可以運行在命令提示符下的Java,甚至在Cygwin的,因爲它使用的系統路徑變量爲好。

+1

一個需要意識到Windows命令提示符吸球。 – Mikuz

+0

設置PATH變量可以使java從命令行運行,無論是在cygwin還是Windows命令提示符下運行。 – caburse

+0

@caburse喚醒我,當我可以在Windows命令行中運行bash腳本,並讓它與java合作。我們中的一些人使用基於Unix的編程環境,並且我非常懷疑我可以在cmd shell中進行bash中的解析。 – Wyatt8740

0

呵呵哈哈菜鳥的錯誤。你必須追加Java源代碼目錄路徑,而不是直接導出,如此export PATH=$PATH:"/cygdrive/C/Program Files (x86)/Java/jdk1.7.0_51/bin"代替export PATH="/cygdrive/C/Program Files (x86)/Java/jdk1.7.0_51/bin

1

第一:

Within cygwin, use bash. 
Also install java8, older versions lack key features. 

二:

Add the following lines to your .bashrc file: 
echo "javac  :`which javac`" 
echo "jar  :`which jar`" 
echo "java  :`which java`" 
echo "ant  :`which ant`" 

當你開始一個新的bash shell,它會迴應這四個java essentials的版本。 運行每一個沒有參數,你應該得到四個適當的投訴。如果他們不運行,那麼你需要安裝它們。

然後創建一個目錄名爲src和創建HelloWorld.java:

public class HelloWorld 
{ 
    public static void main(String[] args) 
    { 
     System.out.println("Hello World from main!"); 
    } 
} 

在同一目錄下,創建HelloWorldAsPackage.java:

package src; 

public class HelloWorldAsPackage 
{ 
    public static void main(String[] args) 
    { 
     System.out.println("Hello World In a Package (Directory) called 'src'!"); 
    } 
} 

然後創建bash腳本runOneCase.bash:

#!/bin/bash 

echo "Listing $1.java" 
echo "==================================================" 
cat $1.java 
echo "==================================================" 
echo "Compiling $1.java" 
echo "+ javac $1.java" 
javac $1.java 
echo "+ cd $2" 
cd $2 
echo "Running $1.java" 
echo "+ java $3$1 $4" 
java $3$1 $4 
echo "==================================================" 

然後創建bash腳本runThemAll.bash

#!/bin/bash 

echo "CASE 1: HelloWorld" 
runOneCase.bash HelloWorld . "" "" 

echo "CASE 2: HelloWorld as a Package" 
runOneCase.bash HelloWorldAsPackage .. src. "" 

現在運行腳本:runThemAll.bash,方法是在cygwin提示符下鍵入它。

如果你得到以下輸出,你可以考慮在cygwin下安裝java。

CASE 1: HelloWorld (Hit Return) 

Listing HelloWorld.java 
================================================== 
public class HelloWorld 
{ 
     public static void main(String[] args) 
     { 
       System.out.println("Hello World from main!"); 
     } 
} 
================================================== 
Compiling HelloWorld.java 
+ javac HelloWorld.java 
+ cd . 
Running HelloWorld.java 
+ java HelloWorld 
Hello World from main! 
================================================== 
CASE 2: HelloWorld as a Package (Hit Return) 

Listing HelloWorldAsPackage.java 
================================================== 
package src; 

public class HelloWorldAsPackage 
{ 
     public static void main(String[] args) 
     { 
       System.out.println("Hello World In a Package (Directory) called 'src'!"); 
     } 
} 
================================================== 
Compiling HelloWorldAsPackage.java 
+ javac HelloWorldAsPackage.java 
+ cd .. 
Running HelloWorldAsPackage.java 
+ java src.HelloWorldAsPackage 
Hello World In a Package (Directory) called 'src'! 
+0

你在cygwin中是什麼意思,使用bash? –

+0

本例使用bash,也可以使用Bourne shell(sh),tsh,csh等。 – vwvan