0

GWT の Super Devmode を再起動せずに変更をリロードできるように、GWT/Maven プロジェクトで DCEVM (JDK 1.8 51) と HotSwap-Agent をセットアップしようとしています。まず、私のプロジェクトは次のように設定されています。

プロジェクト-コア - データ
-i18n

ここで、core は mvn gwt:run を実行するメイン モジュールです。i18nやデータモジュールに依存するので、そちらもリロードしてほしいです。したがって、hotswap-agent.properties に次のように記述します。

extraClasspath=<pathto>/i18n/target/classes,<pathto>/data/build/target/classes

DCEVM を代替 jvm としてインストールし、MAVEN_OPTS を次のようにセットアップしました。

SET MAVEN_OPTS=-XXaltjvm=dcevm -javaagent:<pathto>/hotswap-agent.jar -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+EnableInvokeDynamic 

ここから mvn gwt:run を実行して開発モードを開始します。HotSwap-Agent は、次の行から明らかなように、適切に初期化されているようです。

HOTSWAP AGENT: 10:43:6.444 INFO (org.hotswap.agent.HotswapAgent) - Loading Hotswap agent {0.3.0-SNAPSHOT} - unlimited runtime class redefinition.
HOTSWAP AGENT: 10:43:6.663 INFO (org.hotswap.agent.config.PluginRegistry) - Discovered plugins: [Hotswapper, WatchResources, AnonymousClassPatch, Hibernate, Spring, Jersey2, Jetty, Tomcat, ZK, Logback, JSF, Seam, ELResolver, OsgiEquinox, Proxy, WebObjects, Weld]
HOTSWAP AGENT: 11:17:46.400 INFO (org.hotswap.agent.config.PluginRegistry) - Plugin 'org.hotswap.agent.plugin.hotswapper.HotswapperPlugin' initialized in ClassLoader 'java.net.URLClassLoader@4d49f239'.

そして、devmode が開始され、アプリケーションなどを実行できます。

たとえば、データに対して mvn クリーン インストールを実行すると、HotSwap-Agent は変更を検出するように見えますが、次のようになります。

HOTSWAP AGENT: 11:2:38.541 WARNING (org.hotswap.agent.watch.nio.WatcherNIO2) - WatchKey 'sun.nio.fs.WindowsWatchService$WindowsWatchKey@7d9da813' overflowed

そして、膨大なリスト (モジュール内のすべてのクラスのトレースを取得しているように見えます):

HOTSWAP AGENT: 11:2:43.945 ERROR (org.hotswap.agent.annotation.handler.WatchEventCommand) - Unable create CtClass for URI 'file:///<pathto>/data/build/target/classes/<packageto>/DashboardWidget$DashboardWidgetMetaData.class'.
java.lang.IllegalArgumentException: java.io.FileNotFoundException: <pathto>\data\build\target\classes\<packageto>\DashboardWidget$DashboardWidgetMetaData.class (The system cannot find the file specified)
        at org.hotswap.agent.util.IOUtils.toByteArray(IOUtils.java:50)
        at org.hotswap.agent.annotation.handler.WatchEventCommand.createCtClass(WatchEventCommand.java:191)
        at org.hotswap.agent.annotation.handler.WatchEventCommand.onWatchEvent(WatchEventCommand.java:120)
        at org.hotswap.agent.annotation.handler.WatchEventCommand.executeCommand(WatchEventCommand.java:51)
        at org.hotswap.agent.command.impl.CommandExecutor.run(CommandExecutor.java:25)
Caused by: java.io.FileNotFoundException: <pathto>\data\build\target\classes\<packageto>\DashboardWidget$DashboardWidgetMetaData.class (The system cannot find the file specified)
        at java.io.FileInputStream.open0(Native Method)
        at java.io.FileInputStream.open(FileInputStream.java:195)
        at java.io.FileInputStream.<init>(FileInputStream.java:138)
        at java.io.FileInputStream.<init>(FileInputStream.java:93)
        at sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:90)
        at sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:188)
        at java.net.URL.openStream(URL.java:1038)
        at org.hotswap.agent.util.IOUtils.toByteArray(IOUtils.java:44)
        ... 4 more

HOTSWAP AGENT: 11:2:43.945 ERROR (org.hotswap.agent.annotation.handler.WatchEventCommand) - Unable create CtClass for URI 'file:///<pathto>/data/build/target/classes/<packageto>/ItemImage.class'.
java.lang.IllegalArgumentException: java.io.FileNotFoundException: <pathto>\data\build\target\classes\<packageto>\ItemImage.class (The system cannot find the file specified)
        at org.hotswap.agent.util.IOUtils.toByteArray(IOUtils.java:50)
        at org.hotswap.agent.annotation.handler.WatchEventCommand.createCtClass(WatchEventCommand.java:191)
        at org.hotswap.agent.annotation.handler.WatchEventCommand.onWatchEvent(WatchEventCommand.java:120)
        at org.hotswap.agent.annotation.handler.WatchEventCommand.executeCommand(WatchEventCommand.java:51)
        at org.hotswap.agent.command.impl.CommandExecutor.run(CommandExecutor.java:25)
Caused by: java.io.FileNotFoundException: <pathto>\data\build\target\classes\<packageto>\ItemImage.class (The system cannot find the file specified)
        at java.io.FileInputStream.open0(Native Method)
        at java.io.FileInputStream.open(FileInputStream.java:195)
        at java.io.FileInputStream.<init>(FileInputStream.java:138)
        at java.io.FileInputStream.<init>(FileInputStream.java:93)
        at sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:90)
        at sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:188)
        at java.net.URL.openStream(URL.java:1038)
        at org.hotswap.agent.util.IOUtils.toByteArray(IOUtils.java:44)
        ... 4 more

これはすべて、hotswap-agent がコア モジュールの変更にも気付いたときに発生します。

その後、プログラムは正常に再開されますが、ブラウザーを更新しても変更が反映されません。オーバーフロー メッセージまたは filenotfound 例外 (hotswap-agent を参照) を調べても、検索結果が得られません。だから、私は何が起こっているのか本当に知りません。どんな助けでも素晴らしいでしょう!

4

0 に答える 0