问题标签 [dynamic-class-loaders]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Reusing Class Instance without recreating them
I have a bunch of classes that I have already loaded and already done newInstance() on the classes. I would like to reuse these classes without needing to do a newInstance() again and also reuse their current states. Is there a method to replace the use of newInstance() so that I can reuse already instantiated classes without recreating them (thus losing all the states). How should I go about it ?
Note: I have a previous post regarding classloading but the problems behind these 2 posts are not the same.
java - 仅使用字符串的动态类加载
有没有办法在运行时编译和加载 Java 类,而无需在操作系统文件系统中创建和存储文件?
假设我有一个包含 java 类的字符串表示的数据库记录。我将该字符串拉入 Java 内存。我的目标是将该 String 编译成一个 java 类,然后加载该类。
让我说清楚。在任何操作系统中,我都不想与 .java 文件或 .class 文件有任何关系。
这可能吗?如何?
例如,下面是在运行时加载 Groovy 类并调用方法的代码:
但我们可以做类似的事情:
?
java - 将对象传递给 JCL 加载的类
我有一个非常棘手的问题。ComponentContext
我有一个容器,可以使用以类作为参数的方法运行自定义 JAR 。加载后我想用反射调用这个方法,但是有一个问题——我必须使用相同的类加载器(在这种情况下为 JCL)来创建ComponentContext
. 见代码:
当我尝试像这样传递在容器中创建的上下文时
java.lang.IllegalArgumentException
由于另一个类加载器而失败。
这意味着我的容器依赖于 JAR 中的类,这让我抓狂。有没有办法将我自己的ComponentContext
(不是从 JAR 实例化的)传递给方法initialize
?
PS - JAR 是用assembly:single
java - 使用 Java RMI 时代码在哪里执行?
在没有任何 Java RMI 经验的情况下,我有一个幼稚的问题,但在搜索互联网后仍然不确定答案。
问题:
在我看来,有两种情况:
场景1:从本地启动一个Java程序,在执行过程中,它从存储在远程机器上的类中调用一个方法,然后将该方法的类下载到本地机器,并继续执行。
场景2:从本地启动一个Java程序,在执行过程中,它从存储在远程机器上的类中调用一个方法,然后该方法将在远程机器上执行,并将结果发送回本地机器. (这需要类/对象转移吗?)
Java RMI 使用哪一个?或者都不是?
来自RPC 的维基百科:“RPC 允许计算机程序使子程序或过程在另一个地址空间(通常在共享网络上的另一台计算机上)执行”,这似乎是第二种情况。
但是根据这篇论文Reducing Data Transfer during Remote Classloading in Java RMI,这似乎是第一种情况。
java - 使用 RMIClassLoader 和 URLClassLoader 的场景?
谁能解释这两个装载机的一般用途?
它们之间的主要区别是什么?
它们在哪些典型场景中使用?
java - 如何使用 -Xbootclasspath/p:path 完成类加载?
我已经看到 -Xbootclasspath/p:path 用于动态加载类,请您通过提供示例进行详细说明和解释。
java - 如何使用 Oracle 文档构建 URI
我浏览URL API
了 Oracle 文档。我想构建位于远程机器上URI
的引用Jars
,但是从规范中我无法确定如何使用它们。该文件提供RFC2396
了规格参考。但是,这也没有为其用法提供任何具体示例。
java - 类加载器并加载一个位置不等于其包的类
.class
每当编译文件出现在该特定目录中时,我希望能够从已知目录加载一个类。.class
但是,无论文件package
中的声明是什么,我都希望加载.java
。例如,我有这个我想加载的类:
}
它在包装中com.javaloading.test
。然后我想使用这个类加载它:
如果我将上述.class
两个类的文件放入同一个目录并运行GetPackage
它会导致错误
线程“主”java.lang.NoClassDefFoundError 中的异常:SomeClassInPackage(错误名称:com/javaloading/test/SomeClassInPackage
我需要能够(从文件中)加载一个类,而不管它是声明的包,而不必真正知道它的包。然后我会检查加载的类的包信息。这是否可以使用 System ClassLoader 或自定义 ClassLoader 或者在不了解包结构的情况下是不可能的?如果可能的话,任何建议表示赞赏。
java - 从非默认包加载类
当我尝试在运行时动态加载一个类,并且该类是在一个不是默认包的包中编译时,我有一个 ClassNotFound 异常。
示例:包名称:“型号”。类名:“Cup.class”。这是我的代码:
java - 如何在运行时从下载的 jar 文件中加载未知类?
我正在构建一个客户端服务器应用程序。在运行时,客户端应用程序从服务器应用程序加载一个 jar 文件并存储它。我将客户端和服务器应用程序都作为 jar 文件运行。我现在想加载这个下载的 jar 文件中包含的类。
例如,我有一个接口 A 和一个实现 A 的类 B。客户端应用程序不知道类 B、它的名称甚至它的存在。客户端应用程序启动后,客户端应用程序下载一个 jar 文件,该文件包含一个 jar 文件,其内容为: server/package/B.class 其中 server 和 package 是文件夹。
现在客户端应用程序应该使用以下代码从下载的 jar 文件中加载此类 B:
但后来我ClassNotFoundException
在最后一行得到了一个。我必须先提取 jar 文件吗?jar 文件中的文件夹结构类似于服务器应用程序的 bin 目录中的文件夹结构。