2

Ubuntu 12.04 サーバーで実行されている gwan サーバーに付属している標準の hello.java と hello.c に対してテストしました。G-WAN 4.3.1 64 ビット (2013 年 3 月 1 日 17:36:39)

gwan を実行したら

sudo ./gwan -d

また、デーモン オプションなしで同じ動作が実行されていることにも気付きました。

次に、192.168.0.2:8080/?hello.c を参照すると、「Hello, ANSI C!」という期待どおりの出力が得られます。hello.c のテキストを変更し、ブラウザーを更新すると、期待どおりの変更が得られます。

hello.java ファイルで同じことを行うと、gwan を再起動するまでテキストへの変更が表示されません。

ファイルが変更されるたびに再コンパイルを引き起こす単純な設定が欠けているかどうかは誰にもわかりますか? 私は OpenJdk 7 を使用しています。別のネットワーク。同じことですが、サーバーを再起動するまで変更が反映されないようです。(Java の場合、.c ファイルで問題なく動作しました)

ありがとう -スティーブ

4

1 に答える 1

2

あなたが正しいです。これは、 Java クラスを動的にアンロードおよび再ロードする方法である「JNI カスタム クラス ローダー」を作成および使用する方法が見つからなかったため、長年の未解決の問題です。

支援を求めると、一部の Java ユーザーは、この機能をサポートする巨大な (数百 MB) Java パッケージにリダイレクトされましたが、これは JNI ANSI C コードの数行の問題にすぎないため、C で実装したいと考えています。 G-WAN プログラム自体 (それを行うための JVM の知識が不足しているだけです)。

Java コミュニティからの支援は大歓迎です (貢献者は、クレジットが必要な場合はクレジットを受け取ります)。この Java 機能はまだありません。

于 2013-03-06T07:46:54.403 に答える