[Armadillo:06778] Re: Debian lenny で Java (Open JDK) を使う

Takenoshita Koyo email@hidden
2011年 2月 8日 (火) 15:22:57 JST


竹之下です。

インラインにてご回答いたします。

email@hidden さんは書きました:
> お世話になっております。
> 東芝の上村です。
>  
> お忙しいところ、真に申し訳ありませんが、ご教示頂けないでしょうか。
>  
> 以下のURLの手順に沿って、Debian lenny で Java (Open JDK) を使う環境を構 
> 築しております。
> URLの3項と4項に関して、少々、補足説明をして頂いてもよいでしょうか。
>  
> http://armadillo.atmark-techno.com/howto/openjdk-debian-lenny
>  
> 3. Java 開発環境のインストール
> 作業用 PC に Java 開発環境をインストールします。作業用 PC で以下のコマン 
> ドを実行してください。
> [PC ~]$ sudo apt-get install openjdk-6-jdk
>  
> 【1】
> 「VMwraeへ開発環境(作業用PC): ATDE v3 v20100309をセットした段階で、Sun 
> Java 5.0 consoleというものが既にインストールされていますが、このツール 
> を使用して、HelloWorld.java を作成するのでしょうか?。3項(Java 開発環 
> 境のインストール)でインストールするJava 開発環境との関連が良く解かりま 
> せん」
Javaの実装はいくつかあります。Sun Java 5.0 consoleは、Sunが提供しているJava
の実装用のツールです。「3. Java 開発環境のインストール」でインストールする
Java開発環境(Open JDK)は、それとは別の実装です。

Sunの実装は、ARM用に簡単にインストールすることができないので、今回は後者を
使います(2. Java Runtime のインストール)。実行環境(Runtime)と開発環境は
一緒の方が、バージョン違いなどの問題が起きにくいので、開発環境も同じもの
をインストールしています。

少し話がそれますが、Debian lennyでは、alternativesという仕組みで、複数の
バージョンが共存できるようになっています。例えば、javaコマンドや
javacコマンドは、実際には/etc/alternatives/ディレクトリ以下へのリンクと
なっています。

[PC ~]$ ls -l $(which java)
lrwxrwxrwx 1 root root 22 2009-11-05 21:51 /usr/bin/java -> /etc/alternatives/java
[PC ~]$ ls -l $(which javac)
lrwxrwxrwx 1 root root 23 2009-11-05 21:51 /usr/bin/javac -> /etc/alternatives/javac

ATDE3の標準状態では、これらはそれぞれSun Java 1.5.0へのリンクになっています。

[PC ~]$ ls -l /etc/alternatives/java
lrwxrwxrwx 1 root root 40 2009-11-05 21:52 /etc/alternatives/java -> /usr/lib/jvm/java-1.5.0-sun/jre/bin/java
[PC ~]$ ls -l /etc/alternatives/javac
lrwxrwxrwx 1 root root 37 2009-11-05 21:52 /etc/alternatives/javac -> /usr/lib/jvm/java-1.5.0-sun/bin/javac

「sudo apt-get install openjdk-6-jdk」を実行すると、OpenJDK6へのリンクに置き換わります。

[PC ~]$ ls -l /etc/alternatives/java
lrwxrwxrwx 1 root root 40 2011-02-08 14:50 /etc/alternatives/java -> /usr/lib/jvm/java-6-openjdk/jre/bin/java
[PC ~]$ ls -l /etc/alternatives/javac
lrwxrwxrwx 1 root root 37 2011-02-08 14:50 /etc/alternatives/javac -> /usr/lib/jvm/java-6-openjdk/bin/javac

この場合でも、Sun Javaはインストールされたままなので、/usr/lib/jvm/java-1.5.0-sun/jre/bin/javaを
絶対パスで指定して実行すれば、Sun Javaを使うこともできます。

ちなみに、update-alternativesコマンドを使うと、単に「java」と実行したときに
どちらの実装を使うかを変更できます。

$ sudo update-alternatives --config java

`java' を提供する 2 個の alternatives があります。

  選択肢       alternative
-----------------------------------------------
          1    /usr/lib/jvm/java-1.5.0-sun/jre/bin/java
*+        2    /usr/lib/jvm/java-6-openjdk/jre/bin/java

デフォルト[*] のままにするには Enter、さもなければ選択肢の番号のキーを押してください: 


>  
> 【2】
> 「既に持っておりましたWindows環境で動作するEclipse3.6(システムライブラ 
> リーをjavaSE-1.6の設定)を使用して作成した.javaファイルを、開発PC環境で 
> [PC ~]$ javac HelloWorld.javaコマンドを実行して作成した.classファイルを 
> Armadilloに実行したのですが、以下のようにメッセージが表示されて、実行で 
> きませんでした。Eclipse3.6環境で作成した.javaファイルは、Armadillo環境で 
> は、使用できないのでしょうか?」
>  
> debian:/usr# startx $(which java) HelloWorldGui
> X: warning; process set to priority -1 instead of requested priority 0
>  
> X.Org X Server 1.4.2
> Release Date: 11 June 2008
> X Protocol Version 11, Revision 0
> Build Operating System: Linux Debian (xorg-server 2:1.4.2-10.lenny3)
> Current Operating System: Linux debian 2.6.26-at13 #1 PREEMPT Thu Jan 20 
> 17:40:32 JST 2011 armv6l
> Build Date: 25 September 2010  02:52:58PM
>  
>         Before reporting problems, check http://wiki.x.org
>         to make sure that you have the latest version.
> Module Loader present
> Markers: (--) probed, (**) from config file, (==) default setting,
>         (++) from command line, (!!) notice, (II) informational,
>         (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
> (==) Log file: "/var/log/Xorg.0.log", Time: Tue May  9 22:55:46 2000
> (==) Using config file: "/etc/X11/xorg.conf"
> xf86optionListCreate: count must be an even number.
> State: S_UNTOUCHED      Action: No Action               Button: 0
> State: S_TOUCHED        Action: No Action               Button: 0
> State: S_LONGTOUCHED    Action: down            Button: 1
> State: S_MOVING Action: No Action               Button: 0
> State: S_MAYBETAPPED    Action: click           Button: 1
> State: S_ONEANDAHALFTAP Action: down            Button: 3
> [config/hal] couldn't initialise context: (null) ((null))
> Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorldGui 
> (wrong name: jp/tc31501/eclipse/HelloWorldGui)
>         at java.lang.ClassLoader.defineClass1(Native Method)
>         at java.lang.ClassLoader.defineClass(ClassLoader.java:637)
>         at 
> java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
>         at java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
>         at java.net.URLClassLoader.access$000(URLClassLoader.java:73)
>         at java.net.URLClassLoader$1.run(URLClassLoader.java:212)
>         at java.security.AccessController.doPrivileged(Native Method)
>         at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
>         at java.lang.ClassLoader.loadClass(ClassLoader.java:323)
>         at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
>         at java.lang.ClassLoader.loadClass(ClassLoader.java:268)
>         at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:336)
> Could not find the main class: HelloWorldGui. Program will exit.
>  
> waiting for X server to shut down FreeFontPath: FPE 
> "/usr/share/fonts/X11/misc" refcount is 2, should be 1; fixing.

> Eclipse3.6環境で作成した.javaファイルは、Armadillo環境では、使用できないのでしょうか?
に関してですが、.javaファイルは単なるソースコードですので、どこで記述しても
構いません。

> [PC ~]$ javac HelloWorld.javaコマンドを実行して作成した.classファイルを 
> Armadilloに実行したのですが、以下のようにメッセージが表示されて、実行で 
> きませんでした。
とのことですが、実際の実行結果では以下のように「HelloWorldGui」を
実行しています。
> debian:/usr# startx $(which java) HelloWorldGui

そして、「HelloWorldGui」というクラスが見つからないというエラーに
なっています。
> Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorldGui 

もう一度手順をご確認ください。PC上では動作していますでしょうか?

>  
> 「4. サンプルプログラム(非GUI)
> ターミナルに「Hello World」と表示するだけのJavaアプリを作成し、実行して 
> みます。
> 作業用 PC で以下の HelloWorld.java を作成してください。
> HelloWorld.java」
>  
> 【3】
> 「Sun Java 5.0 consoleを使用して、4項のHelloWorld.javaを作成するので 
> しょうか? 」
.javaファイルは、単なるソースコードですので、どんなツールを使って記述しても
構いません。Howtoに載っているぐらいの短いものでしたら、テキストエディタを
使って書いても良いと思います。


※元の文中の、丸1などの記述を算用数字に置き換えさせていただきました。
丸1などの機種依存文字を使うと、メールが保存書庫にアーカイブされたときに
文字化けしてしまうようです。システム上の問題ですが、できれば機種依存文字
を使わないようにしていただきますよう、お願い致します。

> 真に申し訳ありませんが、よろしくお願い致します。
>  
>  
>  
>  
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> armadillo mailing list
> email@hidden
> http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo

-- 
Koyo Takenoshita




armadillo メーリングリストの案内