FaqJdk11Ja

プロジェクトで JDK1.1 を使えますか?

IDE は JDK1.1 をサポートしていませんが使うことはできます。以下は Fedora Core 4 上で JDK6 で動作している NetBeans 5.0 の開発ビルドと Blackdown's JDK 1.1.8 の例です:

1. Java クラスライブラリプロジェクトを作成します

2. ファイル タブで、project.properties を開きます。javac.source の定義を以下のように変更します:

javac.source=1.2

(1.2 は 1.1 と対応するものではありません、assert は使えません。generics(総称)は許可されます)


そして project.propertiesprivate.properties に JDK1.1 のインストール場所を指定します。 例:

jdk11.home=/space/jdk118_v3

3. build.xml を開き以下を追加します。

    <target name="-init-macrodef-javac">
        <macrodef name="javac" uri="http://www.netbeans.org/ns/j2se-project/3">
            <attribute name="srcdir" default="${src.dir}"/>
            <attribute name="destdir" default="${build.classes.dir}"/>
            <attribute name="classpath" default="${javac.classpath}"/>
            <attribute name="debug" default="${javac.debug}"/>
            <element name="customize" optional="true"/>
            <sequential>
                <javac srcdir="@{srcdir}" destdir="@{destdir}" debug="@{debug}"
                       deprecation="${javac.deprecation}" source="1.1" target="1.1"
                       includeantruntime="false" bootclasspath="${jdk11.home}/lib/classes.zip">
                    <classpath>
                        <path path="@{classpath}"/>
                    </classpath>
                    <compilerarg line="${javac.compilerargs}"/>
                    <customize/>
                </javac>
            </sequential>
        </macrodef>
    </target>
    <target name="-init-macrodef-java">
        <macrodef name="java" uri="http://www.netbeans.org/ns/j2se-project/1">
            <attribute name="classname" default="${main.class}"/>
            <element name="customize" optional="true"/>
            <sequential>
                <java fork="true" classname="@{classname}" dir="${work.dir}"
                      jvm="${jdk11.home}/bin/java">
                    <jvmarg line="${run.jvmargs}"/>
                    <classpath>
                        <path path="${run.classpath}:${jdk11.home}/lib/classes.zip"/>
                    </classpath>
                    <syspropertyset>
                        <propertyref prefix="run-sys-prop."/>
                        <mapper type="glob" from="run-sys-prop.*" to="*"/>
                    </syspropertyset>
                    <customize/>
                </java>
            </sequential>
        </macrodef>
    </target>

これらの Ant ターゲットは最低限のコンパイルと実行をサポートします。もし使用する JDK1.1 がこの Blackdown とレイアウトが違うのであれば、ターゲットを調整する必要があるでしょう (Wiki を更新してくださいね)

3a. NetBeans 6.0 を使用している場合は 'depend' の javac のための macrodef を <target name="-init-macrodef-javac"> に追加する必要があります:

   <target name="-init-macrodef-javac">
        <macrodef name="javac" uri="http://www.netbeans.org/ns/j2se-project/3">
           ...
        </macrodef>
         <macrodef name="depend" uri="http://www.netbeans.org/ns/j2se-project/3">
            <attribute default="${src.dir}" name="srcdir"/>
            <attribute name="destdir" default="${build.classes.dir}"/>
            <attribute name="classpath" default="${javac.classpath}"/>
            <sequential>
                <depend cache="${build.dir}/depcache" destdir="@{destdir}" excludes="${excludes}" includes="${includes}" srcdir="@{srcdir}">
                    <classpath>
                        <path path="@{classpath}"/>
                    </classpath>
                </depend>
            </sequential>
        </macrodef>
    </target>

4. 新規の Java GUI フォーム / AWT フォーム / Applet フォーム を作成します。GUI を自由に作成します。

例えば GridBagLayoutをレイアウトマネージャーと して作成します。Mattise は動作しません。もちろん Swing ではなく AWT コンポーネントを使用します。(しかしフォームデザイナーは Java 1.1 にはない BorderLayout.PAGE_START などの定数を使おうとしますので生成されたコードを修正する必要があります。ソースビューでこれらのエラーをチェックしてください。ビジュアルデザイナーを使う場合にはこれらのエラーを排除する必要があります。またコードはデザイナーを一切使わずに書いてもかまいません)

5. init() メソッドの initComponents() が (EventQueue.invokeLater を直接読んでいる箇所を変更する必要があるでしょう。これは JDK 1.1 には存在しません。

6. Shift-F6 を押して (またはメニューの 実行/ファイルを実行を選択して) アプレットを構築して下さい。JDK1.1 の appletviewer が起動してアプレットが表示されるはずです。

7. 同様に main クラスのあるプログラムも動作します。

上記の設定ではコード補完機能は含まれていません。例えば IDE が使用している JDK (IDE が JDK1.4 以上で実行されている場合) のコード補完を表示する場合で JDK1.1 で Ant を実行してプロジェクトをコンパイルしている場合です。またバックグランドでのエラーストライプは表示されません。コード補完とエラー検知を有効にするには少々トリッキーです。なぜなら Java プラットフォームマネージャー は JDK1.1 を認識できないからです。これは手動で行う必要があります:

1. IDE を終了します

2. ユーザーディレクトリ内の (ヘルプ | IDE について で見つけることができます) config/Services/Platforms/org-netbeans-api-java-Platform というディレクトリで JDK11.xml というファイルを次の内容で作成します:

<?xml version='1.0'?>
<!DOCTYPE platform PUBLIC
          '-//NetBeans//DTD Java PlatformDefinition 1.0//EN'
          'http://www.netbeans.org/dtds/java-platformdefinition-1_0.dtd'>
<platform name='JDK11' default='no'>
  <properties>
    <property name='platform.ant.name' value='JDK11'/>
  </properties>
  <sysproperties>
    <property name='sun.boot.class.path' value='/space/jdk118_v3/lib/classes.zip'/>
    <property name='java.specification.version' value='1.1'/>
    <property name='java.class.path' value=''/>
    <property name='java.ext.dirs' value=''/>
  </sysproperties>
  <jdkhome>
    <resource>file:/space/jdk118_v3/</resource>
  </jdkhome>
  <sources>
    <resource>jar:file:/space/jdk118_v3/src.zip!/src/</resource>
  </sources>
</platform>

3箇所の /space/jdk118_v3 は JDK 1.1 のインストール場所に変更して下さい。 2番目以降は URL であるので Windows では \ ではなく / を使って下さい。

3. IDE を再起動します。Java プラットフォームマネージャー には JDK11 というエントリが表示されるはずです。

4. Java プロジェクトのプロパティーを開きます。ライブラリ | Java プラットフォームJDK11 に設定します。IDE はソースレベルを 1.1 にするように警告するのでそれに従いします。

5. コード補完を試してみて下さい。JDK1.1 のクラスのみ表示されるはずです。(しかし、上記のフォームデザイナーの問題が解決するわけではありません)


Microsoft の 1.1 JVM を使用する

Windows マシン上で Microsoft の VM (jview ランチャ) がインストールがされている場合は、それを使って NetBeans 上でアプリケーションやアプレットを開発することができます。以下の設定が必要です。

1. MSJVM ( msjavx86.exeから) をインストールします。Windows Updates を使って Windows を最新の状態にしておくことを忘れないで下さい。

2. Sun の JDK (JRE ではなく) 1.1 を以下からインストールします。

http://java.sun.com/products/archive/index.html

インストールの際にはソースもインストールするように設定します。ここでは Sun の JDK をインストールし、javac.exe がないと IDE から警告を受けないように "JDK" のインストール場所のダミーのフォルダを作成するのが目的です。NetBeans は JDK 1.1 以上でインストールすることに気をつけて下さい。Windows レジストリは最新の JDK をデフォルトとします。netbeans.org を変更して JDK のホームを変更することができます。

3. フォルダを作成します

%NETBEANSUSERDIR%\config\Services\Platforms\org-netbeans-api-java-Platform Notepad などで msjvm.xml というファイルを以下の内容に新規に作成します:

<?xml version='1.0'?>
<!DOCTYPE platform PUBLIC
          '-//NetBeans//DTD Java PlatformDefinition 1.0//EN'
          'http://www.netbeans.org/dtds/java-platformdefinition-1_0.dtd'>
<platform name='msjvm' default='no'>
  <properties>
    <property name='platform.ant.name' value='msjvm'/>
  </properties>
  <sysproperties>
    <property name='sun.boot.class.path' value='C:\WINDOWS\Java\Packages\7ZFNPJNP.ZIP;
C:\WINDOWS\Java\Packages\AHZV3D39.ZIP;C:\WINDOWS\Java\Packages\DFBX7DV9.ZIP;
C:\WINDOWS\Java\Packages\LFNXVZFP.ZIP;C:\WINDOWS\Java\Packages\LVTJVLZP.ZIP;
C:\WINDOWS\Java\Packages\RLNXF3BP.ZIP;C:\WINDOWS\Java\Packages\TRJJ1FVB.ZIP;
C:\WINDOWS\Java\classes;C:\WINDOWS\Java\trustlib'/>
    <property name='java.specification.version' value='1.1'/>
    <property name='java.class.path' value=''/>
    <property name='java.ext.dirs' value=''/>
  </sysproperties>
  <jdkhome>
    <resource>file:/C:/jdk1.1.8/</resource>
  </jdkhome>
<!--
  <sources>
    <resource>file:/C:/jdk1.1.8/src/</resource>
  </sources>
-->
</platform>

(classpath は1行にする必要があります)

  • .ZIP ファイルの場所は実際の環境と違う場合は編集してください。

"JDK ホーム" は Sun の JDK で環境によって違うことに注意して下さい。その場所には bin\javac.exe というファイルがあるはずです。

Sun JDK 1.1 をソース付きでインストールしている場合で、Microsoft の独自拡張クラスの使用を気にしない場合はソースのエントリを指している部分はコメント解除することができます。

4. IDE を起動します

5. 新しい Java プロジェクトを作成します

6. プロジェクトのプロパティーダイアログで Java プラットフォームmsjvm に変更します。

(InvalidObjectExceptionなどの例外が発生する場合があります。その場合は IDE を一度終了し%USERDIR%\var\cacheを削除してから再起動してください。

7. これでエディタでコードが編集できるようになります。コード補完は MS 独自のクラスに関しては msjvm.xml<ソース> で指定しても動きません; しかしいくつかのソースを指定しておかないと Javadoc のポップアップが動かなくなります。また JDK 1.1 のドキュメント (IDE は 1.2 以降のフォーマットを認識します)から追加できなくなります; このため以下のどちらかを選択することになります。完全なコード補完か、MS 拡張を含んでいるが Javadoc のないコード補完かです。 これは IDE でソースを指定してもコード補完に使用しないからです:課題 #70220. (この FAQ の最後を参照してください)

8. コンパイルと実行を設定するには、ファイル タブから build.xml を開き以下を追加します:

    <target name="-init-macrodef-javac">
        <macrodef name="javac" uri="http://www.netbeans.org/ns/j2se-project/3">
            <attribute name="srcdir" default="${src.dir}"/>
            <attribute name="destdir" default="${build.classes.dir}"/>
            <attribute name="classpath" default="${javac.classpath}"/>
            <attribute name="debug" default="${javac.debug}"/>
            <element name="customize" optional="true"/>
            <sequential>
                <javac srcdir="@{srcdir}" destdir="@{destdir}" debug="@{debug}"
                       deprecation="${javac.deprecation}" source="1.1" target="1.1"
                       includeantruntime="false">
                    <bootclasspath>
                        <pathelement location="C:\WINDOWS\Java\classes"/>
                        <pathelement location="C:\WINDOWS\Java\trustlib"/>
                        <fileset dir="C:\WINDOWS\Java\Packages\" includes="*.ZIP"/>
                    </bootclasspath>
                    <classpath>
                        <path path="@{classpath}"/>
                    </classpath>
                    <compilerarg line="${javac.compilerargs}"/>
                    <customize/>
                </javac>
            </sequential>
        </macrodef>
    </target>
    <target name="run" depends="init,compile" description="Run a main class.">
        <exec executable="jview" dir="${work.dir}">
            <arg line="${run.jvmargs}"/>
            <arg value="/cp"/>
            <arg path="${run.classpath}"/>
            <arg value="${main.class}"/>
            <arg line="${application.args}"/>
        </exec>
    </target>
    <target name="run-single" depends="init,compile-single">
        <fail unless="run.class">Must select one file in the IDE or set run.class</fail>
        <exec executable="jview" dir="${work.dir}">
            <arg line="${run.jvmargs}"/>
            <arg value="/cp"/>
            <arg path="${run.classpath}"/>
            <arg value="${run.class}"/>
        </exec>
    </target>
    <target name="run-applet" depends="init,compile-single">
        <fail unless="applet.url">Must select one file in the IDE or set applet.url</fail>
        <exec executable="jview" dir="${work.dir}">
            <arg value="/a"/>
            <arg value="${applet.url}"/>
        </exec>
    </target>

NetBeans で使っている javacのバージョンでクロスコンパイルしますが、動作するはずです。

9. コンパイルできるはずです。また main クラスやアプレットも実行できるはずです。

注意: アプレットや main クラスを実行するにはプロパティーダイアログの 実行 パネルを表示し以下のように変更します。

-Djava.security.policy=applet.policy

/d:java.security.policy=applet.policy

に変更することで jview で動作するようになります。

10. Internet Explorer でアプレットが動作するか確認する場合は、最後のターゲットを以下と置き換えてください。

    <target name="run-applet" depends="init,compile-single">
        <fail unless="applet.url">Must select one file in the IDE or set applet.url</fail>
        <exec executable="C:\Program Files\Internet Explorer\iexplore.exe">
            <arg value="${applet.url}"/>
        </exec>
    </target>

(もし IE がアプレットの表示をブロックしている場合は、警告メッセージをクリックし本当に実行するかどうか確認します)

最後にいくつかのサンプルクラスを実行し設定を検証します:

package testmsjvm;
public class Main {
    public static void main(String[] args) {
        System.out.println("I am " + System.getProperty("java.version") +
                           " from " + System.getProperty("java.vendor"));
        System.out.println(com.ms.wfc.app.Application.class);
    }
}

(上記は MS Java クラスでコンパイルと実行が動作することに注意してください。もし追記情報があれば追加してください!)

package testmsjvm;
public class TestApplet extends java.applet.Applet {
    public void init() {
        System.out.println("Hello! (see applet console, not output window)");
        initComponents();
    }
    // <editor-fold defaultstate="collapsed" desc=" Generated Code ">
    private void initComponents() {
        label = new java.awt.Label();

        setLayout(new java.awt.BorderLayout());

        label.setText(System.getProperty("java.version") +
                      " from " + System.getProperty("java.vendor"));
        add(label, java.awt.BorderLayout.CENTER);

    }// </editor-fold>
    // Variables declaration - do not modify
    private java.awt.Label label;
    // End of variables declaration
}

検討を祈ります!!

もし以下のことがわかったら Wiki に追加してください:

  • IE での ActiveX コントロールとのバインド
  • MS Java SDK の設定方法。MS VJ++1.1 のツール
  • MS 独自のソースの追加とその有効方法
  • あるいは追加ダウンロードなしの状態ですべての標準クラスのコード補完を有効にできます。Java decompiler を非Java プラットフォーム ZIPに実行し、プラットフォームのソースに Sun の JDK の src.zip と MS クラスの "疑似" ソースを指定することで標準 Java クラスの Javadoc も含めることができます。しかし、それはおそらく MS JVM のライセンス規約に違反するものであり行わないでください。プラットフォームの "ソース" に Sun の src.zip と MS の コンパイル済みZIP を指定することで動かすことができます。

バージョン: 5.0 (4.1, 4.0 でも)

プラットフォーム: Linux, Windows



Not logged in. Log in, Register

By use of this website, you agree to the NetBeans Policies and Terms of Use. © 2012, Oracle Corporation and/or its affiliates. Sponsored by Oracle logo