在大型项目中编译单个java类将影响当前运行的应用程序

时间:2014-05-25 07:36:45

标签: java jvm

我注意到Java VM按需加载了类。

所以在一个大型项目中,如果我们对单个类进行更改并进行编译,那么它会立即影响系统中当前运行的java进程吗?

假设我没有将输出存储在某个JAR文件中。

2 个答案:

答案 0 :(得分:1)

当你运行java项目时,或者在javaee War应用程序中.. Java作为加载所有类的ClassLoader,这就是JVM所做的。

http://en.wikipedia.org/wiki/Java_Classloader

因此,如果您想要更改类,则必须重新启动应用程序或服务器。有一些框架可以“动态”上传战争,如下所示:

http://zeroturnaround.com/software/jrebel/

但如果这不是用于生产用途..只需重新启动您的应用程序:)

希望有所帮助

答案 1 :(得分:0)

假设您谈论开发环境?

这里的目标是什么 - 仅编译或编译并部署到应用服务器?

如果您的课程与编译相同,那么这是最佳实践 - 您可以调整构建和部署,以便将其编译到您的工作区,但然后将类复制到.... / deploy文件夹中正确的结构和应用服务器从那里选择它们。这种方式没有锁定运行应用程序。可以编译而不是随意部署。如果你想进行热部署,并且它们不是jar中的类,那么jvm可能不会对类进行锁定。