弊社製品のJava9対応について

パッケージ製品開発担当の大です。こんにちは。

2017/11/27のリビジョンアップで、シーオーリポーツ for Java V2、帳票クリエータ V3 for JavaはJava9に対応しました。Java9で動作させる場合には最新版にアップデートしてください。

以下、Java9で動作させる場合の注意点を記します。

JAI非対応(シーオーリポーツ・帳票クリエータ共通)

Java8以前で動作させる場合、PDF出力時およびTIFF出力時に使用する画像ライブラリはJAIかJAI Image I/O Toolsを選択できました。Java9で動作させる場合は、JAIは非対応になりますのでご注意ください。

Java9で非推奨になった機能(帳票クリエータ)

帳票クリエータは、Java9で非推奨となった機能のいくつかを使用しています。これらの機能を使う場合、Java9の実行時オプション「--add-modules」でモジュールを追加する必要があります(→参考)。

  1. 帳票管理サーバ2011へのアップロード機能を使用する場合
    帳票クリエータの帳票管理サーバ2011へのアップロード機能は内部でjava.xml.wsモジュールを使用しています。

    --add-modules java.xml.ws

    を指定してください。

  2. 1.を使用しないが、帳票クリエータのWEB APIを使用する場合
    帳票クリエータのWEB APIは内部でjava.xml.bindモジュールを使用しています。

    --add-modules java.xml.bind

    を指定してください。

  3. 1.2.を使用しないが、メール送信機能を使用する場合
    帳票クリエータのメール送信機能は、内部でJavaMail(1.4以上)を使用していますが、JavaMailは内部でjava.activationモジュールを使用しています。

    --add-modules java.activation

    を指定してください(→参考)。または、スタンドアロン版のJAF 1.2を使うという方法もあるようです。

  4. 1.2.3.どれも使用しない場合
    モジュールの追加は必要ありません。

extフォルダ

Java9では ${java.home}/lib/ext が廃止されました。ここにシーオーリポーツ・帳票クリエータのモジュールを配置していた場合は、別の場所に移動する必要があります。

帳票管理サーバ for Java

申し訳ございませんが、帳票管理サーバ for Javaは現在のところJava9に対応しておりません。

おまけ

弊社製品と直接は関係ないんですけど、以下のテストをWindowsのJava9で実行するとこけます。Java8以前だと通ります。

    @Test
    public void test() {
        File parent = new File("C:");
        assertThat(new File(parent, "a").toString(), is("C:\\a"));
    }
java.lang.AssertionError: 
Expected: is "C:\a"
     but: was "C:a"
	at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:20)
	at org.junit.Assert.assertThat(Assert.java:956)
	at org.junit.Assert.assertThat(Assert.java:923)
	at FileConstructorTest.test(FileConstructorTest.java:13)
	...(以下略)

Java9対応作業中にみつけたのでバグ報告したのですけど、Java8以前の動作が間違ってたんだそうでCLOSEされてしまったので、ひっそりこのへんで供養しときます。