SunのJavaからMSのJavaにしかないクラスを利用したい
初めて投稿させていただきます。
私は、EXEを作れる、DLLに触れるというメリットでMicrosoft SDK for Java 4.0を使っていたのですが、2007年にMicrosoftが完全にサポートを打ち切ってしまうことからSunのJDKに開発環境を移行しようと考えています。
そこで、MSが提供していた独自クラスをSunのJavaで使えないかと思って調べています。
具体的にはまず、MS Javaで使われているクラスファイルを吐き出すためにコマンドプロンプトで
> clspack /auto
として、classes.zipを作成しました。これをSunのJavaをコンパイルするときに
> javac -cp C:?WINDOWS?Java?Classes?classes.zip hoge.java
> javac -Xbootclasspath C:?WINDOWS?Java?Classes?classes.zip hoge.java
とすると、コンパイルは通るのですが、
> java hoge
> java -cp C:?WINDOWS?Java?Classes?classes.zip hoge
> java -Xbootclasspath C:?WINDOWS?Java?Classes?classes.zip hoge
等として、実行しようとすると次のようなエラーが表示されてしまいます。
Exception in thread "main" java.lang.NoClassDefFoundError: com/ms/win32/User32 at hoge.main(hoge.java:4)
Exception in thread "main" java.lang.NoClassDefFoundError: hoge
Error occurred during initialization of VM
java/lang/NoClassDefFoundError: java/security/ProtectionDomain
ちなみに、hoge.javaはMSのクラスが使えるかを確認するために作ったサンプルです。ソースコードは以下のような内容です。
import com.ms.win32.*;
class hoge{
public static void main(String[] args){
User32.MessageBox(0,"Hello.","Java!!",0);
}
}
MSの提供しているクラスを使うことは出来ないのでしょうか?また、MS以外のものでデバイスにアクセスすることを可能にするクラスは提供されていないでしょうか?
お礼
早速ありがとうございます。 実行しましたら下記のようになりました C:\java>cd "\Program Files\Java\jdk1.5.0\bin" C:\Program Files\Java\jdk1.5.0\bin> C:\Program Files\Java\jdk1.5.0\bin>javac -version javac 1.5.0 javac: ソースファイルがありません。 使い方: javac <options> <source files> 使用可能なオプションには次のものがあります。 -g すべてのデバッグ情報を生成する . . .