GNU ClasspathとJamVMの作り方

classpath gnu jamvm
GNU ClasspathとJamVMの作り方

私はGNU Classpath 0.98とJamVM 1.5.2を構築しようとしています。 JamVMのreadmeに続いて、 ‘configure’を行いました。作ります。 jamVMに「インストール」して、うまくいきました。

それから私はパスにjamvmとSun javacを追加しました。 それから、GNU Classpathを使ってこれを行いました。

./configure --enable-jni --disable-gtk-peer --disable-gconf-peer --disable-plugin

私はこのエラーを得ました:

_
javacが失敗しました(config.logを参照)
_

`config.log`上で、javacがVMStackWalker(jamvm固有のもの)を見つけることができないことを私はCLASSPATHにjamvmクラスを追加しました、そして私はこのエラーを得ました:

_
Java VM jamvmが失敗しました(config.logを参照)
_

config.log`では、jamvmは java.lang.Class`を見つけることができません。

どうしましたか?!

  5  4


ベストアンサー

それをマウント!

1


Ubuntu 12.04用のGNUクラスパスをコンパイルするためのステップ:https://groups.google.com/forum/#!topic/jruby-gsoc/-fnKnP7zxbI

Ubuntu 12.04用にJamVMをコンパイルする手順:https://groups.google.com/forum/#!topic/jruby-gsoc/uJ6RlVvHR-0

1


ecjを試してみてください。クラスパスにはJavaコンパイラが必要です。sun sdkはここでは役に立たないようです。

0


私のMac OS X 10.11の冒険:

JamVM

built with + make clean && CFLAGS ="-m32 "。/ configure +

GNUクラスパス

もう少しかかりました:

# If you already made an attempt
make clean

## If you don't --disable-tools. I didn't have antlr, so I downloaded it.
#curl -O http://www.antlr.org/download/antlr-4.5.1-complete.jar

./configure --disable-gtk-peer --disable-gconf-peer \
    --disable-tools # for tools: --with-antlr-jar=antlr-4.5.1-complete.jar

ここで「+ make 」を使用すると、「 java_io_VMConsole.c:80:19:エラー:宣言されていない識別子「IUCLC」+」を使用してコンパイルが失敗します。 私は結局http://lxr.free-electrons.com/ident?i=IUCLC [そのシンボルが何であるかをグーグル] – それは8進数の01000であり、そしてそれをソースに正しく追加しました:

vim ./native/jni/java-io/java_io_VMConsole.c
# add this line in the beginning of the file: #define IUCLC   0001000

その後、。/ configureは、あなたの `+ javac `がGCJではないことを訴え続けます。 それはGNU Classpathの古いバグのように見えます、私は同様の問題の言及を見つけました。 以下に示すように、「。/ configure 」は壊れており、「 gcj 」以外の「 javac +」では機能しません。

最終的には `+。/ configure +`を編集するだけになりました:

  • 最初に、「+ export JAVAC = $(which javac)+」という行を追加しました

  • 条件付き割り当てを `+ JAVAC_IS_GCJ = no +`に置き換えました

これで、 `。/ configure +`はパスするはずですが、 ` make +`はパスしません。

+。/ configure +`が `+ -fsource = +`に対して生成したすべての `+ Makefiles +`をgrepし、代替がある場合は `+ -fsource +(gcj固有のフラグ)で行をコメントアウトしました`+ -source `引数を含む行、または単に ` fsource `を ` source +`に置き換えます。

最後のステップでは、トップレベルの「+ Makefile 」を編集し、「 SUBDIRS = …​ 」行から「 $(EXAMPLESDIR)+」を削除する必要がありました。エラーでコンパイルされませんでした。

./gnu/classpath/examples/CORBA/NamingService/Demo.java:99: error:
    package gnu.classpath.tools.tnameserv does not exist
      gnu.classpath.tools.tnameserv.Main.main(args);"

それは建った!

実行中にエラーが発生しましたが、https://stackoverflow.com/questions/19776571/error-dlopen-library-not-loaded-reason-image-not-found [これはまったく別の話です] …​

$ DYLD_FALLBACK_LIBRARY_PATH=/usr/local/classpath/lib/classpath \
  /usr/local/jamvm/bin/jamvm -verbose:class -verbose:jni Test
...
Failed to open library /usr/local/classpath/lib/classpath/libjavanio:
dlopen(/usr/local/classpath/lib/classpath/libjavanio.so,
1): image not found]
...
Exception occurred while printing exception (java/lang/NoClassDefFoundError)...
Original exception was java/lang/UnsatisfiedLinkError

(実行できたら回答を更新します)

0


タイトルとURLをコピーしました