プライマー:
来週、UCSD で Java クラスを開始します。私たちの教科書では、最初の 2 つの章で使用するobjectdraw.jarというライブラリをダウンロードする必要があります。java_libraries
ライブラリをダウンロードし、自分のディレクトリにあるフォルダーに配置しました~/home/dev/
。
Linux で Java プログラムを実行しようとしていますが、実行しようとするとエラーが発生します。正常にコンパイルされますが、実行されません。
コンパイルするには、TouchyWindow.java
ファイルが存在するディレクトリから次のコマンドを発行します~/dev/java/
。
javac -classpath ../java_libraries/objectdraw.jar TouchyWindow.java
注: エラーや警告なしでコンパイルされます。
プログラムを実行するには、TouchWindow.class
ファイルが存在するディレクトリから次のコマンドを発行します~/dev/java/
。
java -classpath ../java_libraries/objectdraw.jar TouchyWindow
プログラムを実行しようとすると、次のエラーが発生します。
Exception in thread "main" java.lang.NoClassDefFoundError: /home/fhaddad78/dev/java/TouchyWindow
Caused by: java.lang.ClassNotFoundException: .home.fhaddad78.dev.java.TouchyWindow
at java.net...
at java.security...
at java.net...
at java.lang...
at sun.misc...
at java.lang...
Could not find the main class: /home/fhaddad78/dev/java/TouchyWindow. Program will exit.
私のシステムについて:
私は Iceatea Java SDK を使用して Gentoo Linux でこれを行っています。それが問題を引き起こす可能性があるかどうかわからないので、これについて言及します。
私はJavaが初めてで、見つからないファイルが見つからないと言っているパスにあるため、これが何を意味するのかよくわかりません。
更新 プログラムを説明するために、ソースコードは数行しかないので貼り付けておきます。
// TouchyWindow.java
import objectdraw.*;
import java.awt.*;
public class TouchyWindow extends WindowController {
public void onMousePress(Location point) {
new Text("I'm Touched", 40, 50, canvas);
}
public void onMouseRelease(Location point) {
canvas.clear();
}
}
objectdraw.jar ライブラリ ファイルは、ソース ファイルに欠けていると思われるものを処理します。
更新 好奇心のために、Windows を起動し、Java SDK と Eclipse をインストールしました。新しいプロジェクトを作成し、上記と同じコードを使用し、すべてコンパイルして問題なく動作しました。それは、問題に関する可能なガイダンスにまったく役立ちますか?
objectdraw.jar に関する更新
これは私の問題でしょうか?
以下は教科書のサイトからの引用です。
アプレットではなくアプリケーションで objectdraw を使用する objectdraw ライブラリのバージョン 1.1 以降で新しく追加されたアプリケーションで objectdraw を使用する簡単な方法があります。これらのバージョンの objectdraw では、startController という名前の新しいメソッドを使用して、WindowController (または Controller) の拡張機能をアプリケーションとして実行できます。このメソッドは Controller クラスに含まれています (したがって、WindowController によって継承されます)。
アプレットをアプリケーションとしても実行できるプログラムに変えるには、Controller または WindowController を拡張するクラスに次のメソッドを追加するだけです。
public static void main(String[] args) { new MyClassName().startController(400,400); }
上記で、MyClassName は Controller を拡張するクラスの名前のプレースホルダーであり、パラメーター (400,400) は必要なウィンドウのサイズを指定します。