在debian linux 4.0下無法順利編譯java程式

歡迎提問 debian desktop 相關問題,何謂 desktop ? 舉凡您日常生活會用到的部份,如上網 ( www 、 bbs ..) 、程式設計、繪圖...等等。 通常以 X Window 環境底下問題為主。

在debian linux 4.0下無法順利編譯java程式

文章u392 » 週六 5月 12, 2007 10:03 am

我的linux是debain linux 4.0 unstable kernel-2.6.18-k7
以apt-get安裝了
sun-java6-jdk,
sun-java6-jre,
sun-java6-fonts,
sun-java6-plugin

安裝完後進入http://java.com/zh_TW/download/help/testvm.xml測試java-plugin
結果是可以使用的

接下來要測試javac是否可以使用,結果就不行了, 不過同樣的程式在windows下就可以編譯成功
我將下列的程式碼書入並存為HelloWorld.java
代碼: 選擇全部
public class HelloWorld

{

public static void main(String[] args)

{

System.out.println("hello world in linux");

}




在console下用javac編譯, 產生了下列的錯誤訊息

代碼: 選擇全部
NukeLab:~/java# javac HelloWorld.java
----------
1. ERROR in HelloWorld.java (at line 1)
        public class HelloWorld
        ^
The type java.lang.Object cannot be resolved. It is indirectly referenced from required .class files
----------
2. ERROR in HelloWorld.java (at line 1)
        public class HelloWorld
        ^
The type java.lang.String cannot be resolved. It is indirectly referenced from required .class files
----------
3. ERROR in HelloWorld.java (at line 1)
        public class HelloWorld
                     ^^^^^^^^^^
Implicit super constructor Object() is undefined for default constructor. Must define an explicit constructor
----------
4. ERROR in HelloWorld.java (at line 5)
        public static void main(String[] args)
                                ^^^^^^
String cannot be resolved to a type
----------
5. ERROR in HelloWorld.java (at line 9)
        System.out.println("hello world in linux");
        ^^^^^^
System cannot be resolved
----------
5 problems (5 errors)NukeLab:~/java#       

後來我在.bashrc下加上下列幾行

代碼: 選擇全部
export J2REDIR=/usr/lib/jvm/java-6-sun
export PATH=$PATH:$J2REDIR/bin
export MANPATH=$MANPATH:$J2REDIR/man
export CLASSPATH=$CLASSPATH:$J2REDIR/lib:$J2REDIR/lib/dt.jar:$J2REDIR/lib/tools.jar:$J2REDIR/lib/mysql_connector.jar
export JRE_HOME=$J2REDIR/jre   

再編譯一次, 結果也是一樣

我想在windows下可以編譯的程式, 在linux下卻沒辦法可能是
1. 路逕設定錯誤,所以找不到該有的函式庫, 不知道以apt-get直接安裝的java-jdk要如何去設定路徑?
2. java程式拿到linux下編譯, 是否在開頭需要import其它的東西?
3. 我是否要暫停使用unstable的java套件, 或許這個編譯好的套件還有一些問題,
也許回去用java-package把sun的bin檔安裝來用會比較實際.

煩請版上的高手為我解惑, 謝謝各位.
u392
可愛的小學生
可愛的小學生
 
文章: 4
註冊時間: 週六 5月 12, 2007 9:12 am

文章訪客 » 週六 5月 12, 2007 4:10 pm

你有export JAVA_HOME嗎?
訪客
 

文章lubig » 週六 5月 12, 2007 5:50 pm

小弟亂猜一下, 連 String, System 這些 java.lang.* 的都沒有
那, 以下試看看

1.
which javac 看一下用到 javac 的對不對, 是不是 sun 的
(如果是 link 就追下去)

2. 你的 HelloWorld 程式有沒有不小心寫到 package
3. class path 的內容看一下
lubig
可愛的小學生
可愛的小學生
 
文章: 21
註冊時間: 週三 6月 29, 2005 1:35 pm

文章redjoe » 週日 5月 13, 2007 2:48 am

sudo update-alternatives --config java
sudo update-alternatives --config javac
redjoe
快樂的大學生
快樂的大學生
 
文章: 518
註冊時間: 週一 4月 07, 2003 10:15 pm
來自: Taiwan

文章u392 » 週三 5月 16, 2007 12:09 am

感謝各位的回覆, 現在問題看起來好像解決了, 解決的方式是
apt-get update
apt-get upgrade
更新的時候就看見它更新了一堆gcj的東西, 然後java就可以編譯和執行了.

之所以會作更新其實是因為我的kde實在太會當了, 想說更新一下看看會不會比較穩. 不過結果還是一樣很容易當, 特別是叫出mozilla(or

Iceape)或konqure時特別會當. 這是題外話.

不過現在看起來我的問題暫時是解決了. 但是我還是對java在debian的路徑搞不太清楚. 我看最後的路徑都是指向一個java-1.5.0-xxx-gcj的目錄. 是否這就是我的java路徑?

另外我也執行了樓上那位先生提供的指令. 想請教一下若我執行了這些指令, 在.bashrc 或.profile裡面還需要設定java的路徑嗎?

最後還是題外話: Debian 4.0的桌面是不是真的很不穩定? 有沒有人有類似的經驗?
u392
可愛的小學生
可愛的小學生
 
文章: 4
註冊時間: 週六 5月 12, 2007 9:12 am

文章Zombie » 週三 5月 16, 2007 9:05 pm

debian 預設的javac/java 是gcj所提供,
在使用時,透過alternatives下的javac/java指到所要使用的版本,
你雖然安裝了sun的jdk, 但是,alternative中的java/javac沒有指定到正確(sun的版本)的jdk,所以你在使用時,應該是使用到gcj,如果你是要用java作一些開發的話,建議以update-alternatives把java/javac指定到sun的jdk,會比較好一點。
If something is ugly or hard, it is wrong.
Zombie
可愛的小學生
可愛的小學生
 
文章: 19
註冊時間: 週三 8月 13, 2003 11:35 am

文章liaozi » 週三 5月 16, 2007 9:18 pm

你會當機的原因有可能是gcin+flash的關係,內定gcin的版本跟flash有衝到,建議更新gcin(直接用gcin同好會的最新版)
我有裝過jre,直接用官方的套件安裝的,java plugin在瀏覽器裡的中文字型顯示沒問題 :)
無事以當貴 早寢以當富 安步以當車 晚食以當肉
http://liaozi.twbbs.org/
頭像
liaozi
懵懂的國中生
懵懂的國中生
 
文章: 101
註冊時間: 週一 10月 17, 2005 8:53 am


回到 debian desktop

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客