2011-08-01 3 views
1

Javaコンパイラを含むアプレットを作成するのではなく、Webから(またはそのテキストフィールドから).javaファイルをダウンロードしてコンパイルすることはできません。 私が理解しているところからは、JavaコンパイラはJavaに基づいているため、これが可能です。 しかし、私はJavaコンパイラがクラスファイルをメモリに格納することができるか、明示的なディスクアクセスが必要なのかと思います。 また、javacが生成するエラーをキャッチしたいと思いますが、これは当然です。JavaアプレットにJavacを含める

おそらくどこかの記事がありますか?私は大したことを見つけることができませんでした。私はどんな問題に取り組むことができますか?

編集:OpenCLでアプレットを使用する予定です。そのため、アプレットに署名する必要があります。

編集:ここに同様の質問:Hosting the Java compiler in an applet or in Google AppEngine?

+0

持ってください[見](http://stackoverflow.com/questions/616532/on-the-fly-in-memory-java-code-compilation-for-java-5-and- java-6)質問、あなたを助けるかもしれません。 –

+0

ありがとう!それを見てみましょう。 – RobotRock

+0

なぜそれを翻訳された言語でしたいのですか? – Mikaveli

答えて

1

Javaコンパイラは、あなたと常にあります。 java.lang.Compilerクラスを使用する必要があります。しかし、あなたはSecurityManagerに問題があると思います。

私があなただったら、サーバー側でコードをコンパイルすることをお勧めします。つまり、Javaソースを取得してコンパイルできるサーブレットを開発することになります。生成されたJavaクラスは、アプレットがアクセスできるように設定されたパスの下でHTTP経由で利用できるようにする必要があります。そのため、アプレットはコンパイル後にこのクラスを実行できます。 SSCCE Text Based Compilerのドキュメントから

+0

私はこれについて考えました、そして、これは確かに簡単な方法だと思います。しかし、これはユーザのために帯域幅と時間の両方を要するので、可能であれば私はコンパイルクライアントをしたいと思う。また、セキュリティ上の懸念もあるかもしれません。 – RobotRock

+0

ユーザーはそれを愛しません(アプレットは十分に遅いです); –

+0

Java Webstartも問題ありません。しかし、これは事件を変えないでしょう。それはブラウザから実行されています。 – RobotRock

1

  • javax.tools.ToolProvidergetSystemJavaCompiler()のドキュメントでは、「このプラットフォームで提供されるコンパイラ」または「nullコンパイラがない場合は」が返されると記載されていますが、なぜnullになるのか、またコンパイラがアプレットまたはウェブスタートアプリ。
+0

あなたが引用したテキストのすぐ上にウェブスタートリンクがあります。 tools.jarを提供するとうまくいくと思います。 – RobotRock

+1

はい。ユーザーにJDKがインストールされている場合は、そのコードで行ったようにして、どこにあるかを識別できるようにします。 [アプリケーションのランタイムクラスパスへのコンパイラの追加](http://pscode.org/stbc/help.html#classpath)の注釈も参照してください。 –

+0

WebSTARTにOpenJDKのtools.jarを提供すると、JREだけでコンパイルできますか? – RobotRock