Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java类动态加载过程_Java_Jvm - Fatal编程技术网

Java类动态加载过程

Java类动态加载过程,java,jvm,Java,Jvm,我和我的教授有一场争论,我在谷歌上似乎找不到答案。。。 我的问题是,当我使用另一个类中的方法时,JVM会尝试找到该类的.class文件,对吗?参数是这样的:如果找不到.class文件,会搜索源文件吗?如果找到,会重新编译还是引发异常? 谢谢 更新:我重新措辞了这个问题,我将非常感谢你的帮助 这根本不是标准行为,在正常环境下不起作用 然而,我听说一些商业应用服务器发行版能够做到这一点。。。有人告诉我关于旧的weblogic版本,在开发模式下配置,但可能只是一个城市传奇:P 我想您可以编写一个调优的

我和我的教授有一场争论,我在谷歌上似乎找不到答案。。。 我的问题是,当我使用另一个类中的方法时,JVM会尝试找到该类的.class文件,对吗?参数是这样的:如果找不到.class文件,会搜索源文件吗?如果找到,会重新编译还是引发异常? 谢谢


更新:我重新措辞了这个问题,我将非常感谢你的帮助

这根本不是标准行为,在正常环境下不起作用

然而,我听说一些商业应用服务器发行版能够做到这一点。。。有人告诉我关于旧的weblogic版本,在开发模式下配置,但可能只是一个城市传奇:P


我想您可以编写一个调优的类加载器,在类路径中查找.java文件,并假设它在带有java编译器的JDK上运行,按照您所说的去做。

它根本不是标准行为,在正常环境中无法工作

然而,我听说一些商业应用服务器发行版能够做到这一点。。。有人告诉我关于旧的weblogic版本,在开发模式下配置,但可能只是一个城市传奇:P


我想您可以编写一个调优的类加载器,在类路径中查找.java文件,并假设它在带有java编译器的JDK上运行,按照您所说的去做。

它根本不是标准行为,在正常环境中无法工作

然而,我听说一些商业应用服务器发行版能够做到这一点。。。有人告诉我关于旧的weblogic版本,在开发模式下配置,但可能只是一个城市传奇:P


我想您可以编写一个调优的类加载器,在类路径中查找.java文件,并假设它在带有java编译器的JDK上运行,按照您所说的去做。

它根本不是标准行为,在正常环境中无法工作

然而,我听说一些商业应用服务器发行版能够做到这一点。。。有人告诉我关于旧的weblogic版本,在开发模式下配置,但可能只是一个城市传奇:P


我想您可以编写一个调优的类加载器,在类路径中查找.java文件,并假设它在带有java编译器的JDK上运行,那么就按照您所说的去做。

标准JRE甚至不包括java源代码的编译器。要编译Java源代码,您需要一个JDK或一个包含自己的Java编译器的IDE。如果使用
javac
或IDE的内置编译器编译源代码,这些编译器将搜索引用类的源文件,并在未找到
.class
文件或源文件比类文件新时编译它们。但是,如果您(例如)随后删除引用类的类文件并运行您的程序,JVM将不会搜索源文件。它将抛出一个
NoClassDefFoundError

标准JRE甚至不包括Java源代码的编译器。要编译Java源代码,您需要一个JDK或一个包含自己的Java编译器的IDE。如果使用
javac
或IDE的内置编译器编译源代码,这些编译器将搜索引用类的源文件,并在未找到
.class
文件或源文件比类文件新时编译它们。但是,如果您(例如)随后删除引用类的类文件并运行您的程序,JVM将不会搜索源文件。它将抛出一个
NoClassDefFoundError

标准JRE甚至不包括Java源代码的编译器。要编译Java源代码,您需要一个JDK或一个包含自己的Java编译器的IDE。如果使用
javac
或IDE的内置编译器编译源代码,这些编译器将搜索引用类的源文件,并在未找到
.class
文件或源文件比类文件新时编译它们。但是,如果您(例如)随后删除引用类的类文件并运行您的程序,JVM将不会搜索源文件。它将抛出一个
NoClassDefFoundError

标准JRE甚至不包括Java源代码的编译器。要编译Java源代码,您需要一个JDK或一个包含自己的Java编译器的IDE。如果使用
javac
或IDE的内置编译器编译源代码,这些编译器将搜索引用类的源文件,并在未找到
.class
文件或源文件比类文件新时编译它们。但是,如果您(例如)随后删除引用类的类文件并运行您的程序,JVM将不会搜索源文件。它将抛出一个
NoClassDefFoundError

JVM不会搜索我们试图调用其方法的类的源文件。 JVM将抛出如下异常:

    Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
    Employee cannot be resolved to a type
    Employee cannot be resolved to a type
    at com.test.TestIt.main(TestIt.java:7)

Employee是我们要调用其方法的类(.class file不是为Employee创建的)

JVM不会为我们试图调用其方法的类搜索源文件。 JVM将抛出如下异常:

    Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
    Employee cannot be resolved to a type
    Employee cannot be resolved to a type
    at com.test.TestIt.main(TestIt.java:7)

Employee是我们要调用其方法的类(.class file不是为Employee创建的)

JVM不会为我们试图调用其方法的类搜索源文件。 JVM将抛出如下异常:

    Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
    Employee cannot be resolved to a type
    Employee cannot be resolved to a type
    at com.test.TestIt.main(TestIt.java:7)

Employee是我们要调用其方法的类(.class file不是为Employee创建的)

JVM不会为我们试图调用其方法的类搜索源文件。 JVM将抛出如下异常:

    Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
    Employee cannot be resolved to a type
    Employee cannot be resolved to a type
    at com.test.TestIt.main(TestIt.java:7)

Employee是我们要调用其方法的类(.class文件不是为Employee创建的)

JVM不负责编译源代码。JVM不编译sou