我的WAR文件中的“jrebel JAR文件”在哪里?

时间:2014-11-25 15:38:41

标签: intellij-idea jrebel

我想将 jrebel intellij IDEA JBOSS AS7 一起使用。

(有一个Web应用程序(所以有WAR))。

通过apache-ANT,构建my-WAR并将其部署在JBOSS AS下。

我知道如何将类或资源的任何更改引入my-WAR中的 jrebel (如果我没有记错!),如下所示:

(在 rebel.xml 中)

<classpath>
    <dir name="D:/project/myProject/out/production/myProject">
    </dir>
</classpath>

<web>
    <link target="/">
        <dir name="D:/project/myProject/resources">
        </dir>
        <dir name="D:/project/myProject/view">
        </dir>
    </link>
</web>

但是,真的,“jerebel jar-file” 哪里 my-WAR?

in =&gt; “warFile&gt; WEB-INF&gt; lib”?我没有看到它。

请帮帮我。

1 个答案:

答案 0 :(得分:5)

jrebel.jar打包在IntelliJ IDEA的JRebel插件中。它不必与WAR本身一起部署。当您通过&#34;使用JRebel&#34;运行时,JRebel插件将为命令行设置正确的JVM参数。或&#34;使用JRebel调试&#34;:

-javaagent:/path/to/jrebel.jar

更新:使用 -agentpath JVM选项配置较新版本的JRebel:

-agentpath:${JREBEL_HOME}/lib/<platform-specific-binary>

请参阅documentation reference正确的设置。


如果从IDE启动服务器,则不必自己动手。如果从命令行启动服务器,则必须自己添加JVM参数,并使用正确的jrebel.jar路径,如下所述:http://manuals.zeroturnaround.com/jrebel/standalone/launch-from-command-line.html#jboss-7-x

Java代理拦截类加载,因此必须在其他类之前加载。正如您可能已经猜到的那样,jrebel.jar是一个Java代理,因此不需要将它打包到WAR中。

相反,配置文件rebel.xml必须打包在WAR-WEB / INF / classes目录中。 JRebel使用rebel.xml来检测已编译的类和资源。因此,在部署应用程序时,JRebel会找到rebel.xml配置文件,并且不会从WAR本身加载应用程序类,而是使用该rebel.xml文件中指定的路径。这就是为什么rebel.xml必须在里面战争,因为你也可以从命令行而不是IDE启动服务器。