Monday, 18 December 2017

Java9 and Java Pathfinder

Starwars は見たのでネタバレだいじょうぶ〜 で、Fedora Linux Kernel の debug の方は片付いたので、

  次は、Java Pathfinder on Java9

いや、Java8 では動いているので、別に無理して Java9 で動かす必要はないんですけどね。

で、Mercurital repository

  http://babelfish.arc.nasa.gov/hg/jpf/jpf-core

から取ってくるわけですが、VM API使って Java で Model検査しようってものだからなぁ... last update 2/6 のjdk8u121用ですか。

というわけで、ばっちり ant build できない。

new Integer とかは無視して良いらしいけど、いろいろないと言っている。

Java9 で module system が導入されて、ついでに VM 系がどっかに追いやられたらしい。もう一つは、

  Pathfinder は annotationsg classes   examples  main    peers    tests

と module 分けされているのだが、Java9 では、module-info.java で

  main/module-info.java
  module gov.nasa.jpf {
    requires jdk.unsupported;
    requires java.logging;
    requires java.management;
    requires javafx.swing;
    requires gov.nasa.jpf.annotation;
  }

と明示的に記述してやらないといけないらしい。とググると出てくるわけですが、module-info.java は gov.nasa とかが置かれている top に置かないとだめらしい。

jpf は and なので、build.xml をいじるわけですが、

   <javac srcdir="src/main" destdir="build/main" includeantruntime="false"
      debug="${debug}" deprecation="${deprecation}" classpathref="lib.path">
    <compilerarg value="--module-path"/>
    <compilerarg value="build/annotations"/>
    <compilerarg value="--add-exports" />
    <compilerarg value="java.xml/com.sun.org.apache.bcel.internal.generic=gov.nasa.jpf"/>
    <compilerarg value="--add-exports" />
    <compilerarg value="java.base/jdk.internal.misc=gov.nasa.jpf"/>

と、こんな感じで module path を指定してやると良いようです。

   ant |& grep error
    [javac] jpf-core/src/main/gov/nasa/jpf/vm/HashedAllocationContext.java:111: error: cannot find symbol
    [javac] jpf-core/src/main/gov/nasa/jpf/vm/HashedAllocationContext.java:115: error: cannot find symbol
    [javac] 2 errors
    jpf-core/build.xml:103: Compile failed; see the compiler error output for details.

まで来たが...

が、まだ、動いてない... classes に Java5 互換用の java/lang とかある。java のpackage を上書きしているこいつ、なんとかなるのか?!

なんとかなるなら、御本家の方がなんとかしているんじゃないか説。動かないかもな〜

No comments: