2011-01-22 46 views
0

當我在JVM上運行它時,是否可以使用此文件更改java文件?更改java文件

例如: 我運行abc.java。在這個程序中,我有一個textarea,我想將文本區域中的文本粘貼到abc.java中並保存更改。可能嗎?

+2

java文件不會進入JVM,但java字節碼呢。 – qrtt1 2011-01-22 15:06:19

回答

0

(更新的問題,新的答案)

「在這個項目中我有一個textarea,我想從文本區文本粘貼到abc.java並保存更改。」

這似乎是一個奇怪的循環,自我修改的java代碼?

那麼是的,nrobey所描述的工具將會成爲一種可行的方式,但我同意拉爾夫的觀點可能是一個壞主意。

1

JVM運行類文件(.class)而不是Java( .java)文件。要將* .java文件「轉換」爲* .class文件,需要編譯第一個。

因此改變* java文件不會infuent的JVM以任何方式,因爲它compleatly不interessed。

只因爲一個總體答案 你可以寫一個PROGRAMM的(的.java )當編譯運行(.class)時,修改其自己的源文件(.java)(例如,通過用戶輸入更改字符串)將其編譯(.class),然後使用其新編譯的表單重新啓動它。 但這不是你想要的!一個人會寫這種軟件只是爲了證明這個瘋狂的想法會起作用。

無論如何,你需要的是一種將數據存儲在文件或數據庫中的方法。 (看看用於文件處理的java.io包,以及tutorial)。

1

不,也許你想要的是運行時的動態定義類。如果是這樣,你可以選擇像Groovy這樣的動態語言。

3

3個步驟:

  1. 修改你的java文件,就像你修改的文本文件。

  2. 使用javax.tools compilation tools

  3. 使用ClassLoader實例化您的新編譯的類從編譯您已經運行的JVM內的java文件。