- PR -

SWTのソースをjarに変更しました。

1
投稿者投稿内容
みか
会議室デビュー日: 2006/05/12
投稿数: 4
投稿日時: 2006-05-12 19:22
初めて投稿します。
よろしくお願いします。

現在「eclipse」で開発を行っております。
「SWT」というフレームワークを使用しているのですが
プロジェクトを「jar」にまとめたあと実行ができなくて困っています。

「eclipse」上では実行できます。
「SWT」は「eclipse」のライブラリーの追加より追加しました。

以下の様に実行しました。

jarファイル = test.jar
eclipseの「swt-win32-3139.dll」ファイルのパス=「C:\eclipse\configuration\org.eclipse.osgi\bundles\189\1\.cp」

実行内容


java -cp "C:\test\test.jar" -Djava.library.path="C:\eclipse\configuration\org.eclipse.osgi\bundles\189\1\.cp" TestGamen

すると
「Exception in thread "main" java.lang.NoClassDefFoundError:org/eclipse/swt/widgets/Composite」

とゆうエラーがでました。DLLの設定がおかしいのでしょうか?

もし、お分かりになる方がいらっしゃいましたら
教えて頂けると助かります。
Tdnr_Sym
ぬし
会議室デビュー日: 2005/09/13
投稿数: 464
お住まい・勤務地: 明石・神戸
投稿日時: 2006-05-12 20:05
こんばんは。
#間違っていたらごめんなさい。

引用:

みかさんの書き込み (2006-05-12 19:22) より:
「Exception in thread "main" java.lang.NoClassDefFoundError:org/eclipse/swt/widgets/Composite」

とゆうエラーがでました。DLLの設定がおかしいのでしょうか?



DLLのほかにも、swt.jarって必要じゃないんでしょうか?
みか
会議室デビュー日: 2006/05/12
投稿数: 4
投稿日時: 2006-05-12 20:29

すばやいお返事

ありがとうございます。

「org.eclipse.swt.win32.win32.x86_3.1.1.jar」
というファイルを一緒にまとめて置いています。

==
「.classpath」のファイルの中に
以下のような記述がありますから、関連付けはされていると認識しましたけど、
もしかしたらここが違うかもですか??

<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="lib" path="lib/org.eclipse.swt.win32.win32.x86_3.1.1.jar"/>

uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2006-05-12 20:34
引用:

実行内容

java -cp "C:testtest.jar" -Djava.library.path="C:eclipseconfigurationorg.eclipse.osgibundles1891.cp" TestGamen


この「実行内容」というのがJavaの実行コマンドそのものであれば、クラスパスには
testtest.jarしか設定されていませんね。どのように実行したのですか?
みか
会議室デビュー日: 2006/05/12
投稿数: 4
投稿日時: 2006-05-12 20:58
お返事ありがとうございます。

「テスト実行.bat」
というファイルを作成し、その中に記述しました。

その中では「testtest.jar」ファイルのみクラスパスに設定していませんが、
「testtest.jar」の中身が
===
lib フォルダ
libの中   org.eclipse.swt.win32.win32.x86_3.1.1.jar

META=INF フォルダ

.classpath
.project
TestGamen.class
TestGamen.java
===
になっています。
「.classpath」ファイルの中に
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="lib" path="lib/org.eclipse.swt.win32.win32.x86_3.1.1.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>

と記述されてあるので、この内部でクラスパスの設定をしているのかと
思いましたが 違ったでしょうか???
あしゅ
ぬし
会議室デビュー日: 2005/08/05
投稿数: 613
投稿日時: 2006-05-13 01:15
引用:

みかさんの書き込み (2006-05-12 20:58) より:
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="lib" path="lib/org.eclipse.swt.win32.win32.x86_3.1.1.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>

と記述されてあるので、この内部でクラスパスの設定をしているのかと
思いましたが 違ったでしょうか???


.classpathや.projectはEclipseがどのようにクラスを解決するのか、
ソースの構成がどうなっているか、等の情報を含んだファイルなので、
javaコマンドで直接実行しようとした場合は何の意味もありません。

/META-INF/に入れるべきものは、「manifest.mf」というファイルです。
http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/jar/jar.html

Eclipseでアプリケーションを動かす場合は、Eclipseが-classpath引数
等を自動的に指定してjavaコマンドを起動してくれているんですね。
みか
会議室デビュー日: 2006/05/12
投稿数: 4
投稿日時: 2006-05-13 10:33
おはようございます。みかです。

===
.classpathや.projectはEclipseがどのようにクラスを解決するのか、
ソースの構成がどうなっているか、等の情報を含んだファイルなので、
javaコマンドで直接実行しようとした場合は何の意味もありません。
===

なるほど。わかりました。
私は勝手に関連づけられていると思っていましたが関連づけられていなかったのですね。

みなさんがおっしゃっていたクラスパスに設定されていないという意味がわかりました。

以下で実行したら動作しました。
皆さんありがとうございました。

===
java -cp "C:\Documents and Settings\Administrator\デスクトップ\テスト画面\test.jar";"C:\Documents and Settings\Administrator\デスクトップ\テスト画面\org.eclipse.swt.win32.win32.x86_3.1.1.jar" -Djava.library.path="C:\eclipse\configuration\org.eclipse.osgi\bundles\189\1\.cp" TestGamen
===
1

スキルアップ/キャリアアップ(JOB@IT)