问题标签 [classloader]
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 - 如何在线程化的 Java 应用程序中确定运行时的主类?
我想在运行时确定我的应用程序启动的类名,即具有 main() 方法的类名,但我在另一个线程中,并且我的堆栈跟踪并没有一直回到原始类。
我搜索了系统属性和 ClassLoader 必须提供的所有内容,但一无所获。这些信息不可用吗?
谢谢。
java - 如何通过网络发送课程
我有以下问题:我想通过网络发送一个类型(java.lang.Class)并在另一端“定义”类。
我试过这样:
在接收端:
所以很明显我需要发送类的原始字节码并做一个
但不幸的是,我看不到如何检索已加载类的字节码。我正在寻找类似的东西:
这甚至可以使用标准 JDK,还是有任何小的库可以做到这一点?
java - 在编译时使用自定义类加载器
是否可以为 javac (或一些替代的 java 编译器)指定自定义类加载器?
我喜欢这样的壮举,因为它允许我编译使用只有我的特殊类加载器才能找到的类的类。
对于好奇的人:我会编写一个连接到数据库并根据它找到的表创建类的类加载器。
java - 如何探索从哪些 JAR 加载哪些类?
有没有办法确定在运行时从哪些 JAR 加载哪些类?
我敢肯定,我们之前都经历过 JAR 地狱。我在项目中遇到过很多故障排除ClassNotFoundException
问题NoClassDefFoundError
。我想避免在 JAR 中找到一个类的所有实例,并在代码上使用消除过程导致 CNFE 找到罪魁祸首。
任何分析或管理工具会为您提供此类信息吗?
这个问题非常烦人,纯粹是因为我们应该在类被加载时得到这些信息。必须有办法找到它,或者记录下来并找到它,但我不知道会这样做,是吗?
我知道 OSGi 和版本化的包/模块旨在使这成为一个非问题......但它似乎不会很快消失。
注意:我发现这个问题是我与从版本化 jar 加载的类相关的问题的一个子集。
有点相关,这篇文章解释了在 JAR(在当前目录下)或 M2_REPO 中搜索类的策略: JarScan,扫描所有子文件夹中的所有 JAR 文件以查找特定类
也有点相关,JBoss Tattletale
java - 加载不需要的 Java 类
我目前想知道 JVM 中用于加载从未使用过的额外类的实际开销是多少。
我们有代码迭代类路径中的所有类以找到实现某个接口的类,然后我们加载它们。
这允许将自定义类简单地放在目录中,然后加载和注册它们。
副作用是我们点击了类路径中的每个类,导致类加载。对 JVM 内存有什么影响?
简单地加载类会影响内存吗?
java - 我可以通过配置 java.policy 文件来拒绝对 jvm 类的访问吗?
我想在我的jdk6\jre\lib\security\java.policy
文件中添加一个禁止创建一些被 appengine 列入黑名单的类。例如,我希望本地 jvm 在应用程序尝试实例化时抛出异常javax.naming.NamingException
。
有可能的?
我将尝试在这里解释我的具体问题。Google 提供的服务(GAE-google 应用引擎)对可以使用的类有一些限制。例如,不实例化 javax.naming 包中的 JNDI 类。他们还提供了一个测试服务器,可以用来在我的机器上测试这个应用程序,但是这个服务器允许这样的类并且可以执行代码。只有在将应用程序上传到 google 后,您才会发现自己使用了列入黑名单的课程。我在想是否不能在开发 jvm 上执行此类黑名单强制执行。否则,我认为这很容易,他们可能已经提供了这样的策略文件。
java - OSGi felix:可以在宿主应用程序和捆绑包之间共享一个类吗?
在我的宿主应用程序中,我尝试实现一个简单的 pushService,通过提供 set 和 get 方法,该服务将用于将名为 Vehicle 的类的实例传输到 OSGi 世界。为了能够使用该服务,我将服务接口和 Vehicle 类都导出到了一个 jar 文件中,并将该文件导入到应该使用该服务的包中。
每次我尝试在我的宿主应用程序中使用 Vehicle 类时,它实例化了 felix 框架和包,我得到一个链接错误。阅读以下博客条目(http://frankkieviet.blogspot.com/2009/03/javalanglinkageerror-loader-constraint.html)后,我明白了为什么会发生此错误。但我不知道如何解决我的问题。
是否可以在宿主应用程序和 OSGi 实例之间共享一个类?也许我必须使用反射而不是导入 jar 文件?我查看了那个库(http://code.google.com/p/transloader/),我不确定这个库是否能够解决我的问题......
BR,
马库斯
java - 如何获取 JVM 加载的所有包名称的列表
我需要获取 JVM 加载的所有 java 包的名称。这是为了显示一个包浏览器,就像在 IDE 中找到的一样。我可以通过访问 ClassLoader 类的受保护“包”字段来获取当前类加载器及其祖先的包列表。但是我无法让其他 webapps 加载包,因为它们有自己的类加载器。我在 Weblogic 服务器上测试这个
groovy - Groovy rootLoader 为空
从 Eclipse 运行 groovy 脚本时,以下行:
一片空白。当我直接从命令行运行脚本时,这不为空。我怎样才能找出为什么会发生这种情况?
java - 奇怪的类路径,.NoClassDefFoundError 错误
编辑:找到解决方案。这很奇怪,不是最好的解决方案,但我只是继续将我的 JAVA CODE (com.*) 类放在 swt.jar 中,以便 swt.jar 和我的类在完全相同的时刻同时加载类加载器。不是最好的解决方案,而是临时解决方案
编辑:我在这里添加了大部分代码:http: //groups.google.com/group/clojure/browse_thread/thread/1d7dd4913b2f9aa7 http://groups.google.com/group/clojure/web/NoClassDefIssue.zip http : //groups.google.com/group/clojure/web/MostCodeIssue.java
这是奇怪的 no classdef not found 错误。这是与我 90% 的代码工作的情况略有不同的场景。请忽略我正在使用 Clojure,我也使用常规 Java 代码完成了此操作,但仍然遇到相同的错误。
理想情况下,我希望对自定义类加载器有所帮助。我最初的想法是我可以创建类加载器,将 jar 的文件路径/url 添加到类加载器中,然后我可以启动我的代码。但显然发生了一些奇怪的事情。
我有一个动态加载 4-5 个辅助 jar 文件的 jar 文件。它建立在一个简单的 URLClassLoader 之上。我想这样做是因为我可以让用户单击一个 jar 文件并启动应用程序。所以有一个项目是用户必须担心的。
通过单击此 jar 文件,应用程序从文件系统加载 jar 文件。例如,应用程序加载 swt.jar(Eclipse 的小部件工具包)和其他一些 jars。
3(但不用担心),我的应用程序是基于 Clojure(动态编程语言)构建的,第一个启动的应用程序是这个 Clojure 脚本。我的大部分应用程序都在 clojure 脚本中。
4. 1-3 以内的一切都可以正常工作。应用程序加载和 clojure 脚本运行,SWT GUI 应用程序运行等。
这是不起作用的部分。
我有一个现有的 java 库,称之为 my-swt-gui.jar。那也是一个 swt 应用程序。它基本上已经构建了另一个 gui 应用程序。我正在尝试从我当前的 clojure/swt 应用程序加载窗口。由于某种原因,面向 JAVA 的库无法识别 SWT,并且出现 noclassdef 错误。
这就是奇怪之处。我将确定我认为可能存在异常的地方。
Entitis:A. 面向 java 的类加载器。在 java 类加载器中,我启动了 clojure 应用程序。SWT 和其他 jar 文件使用这个类加载器加载。B. 节实体调用的面向 Clojure 的代码 clojure 代码是一个基于 swt 的 GUI 应用程序。B 工作正常。C. 包含另一个 GUI 窗口的 Java 代码。出于某种原因,这个库不会加载,我得到了错误,noclassdef。
注意:我知道 SWT 类实际上在类路径中,否则我会得到 NoClassFound 异常。我没有得到那个例外。其他事情正在发生。
注意:SWT 包含 win32 dll 是否也是一个问题?也许第一次访问win32 dll jar可以,但是使用java代码它不起作用?但这很奇怪。为什么 SWT 会起作用,然后又不起作用?
我无法向您展示所有代码,希望可以向您展示相关的部分。
这是主要的类加载器代码:
这就是我尝试加载 java swt 窗口的方式。我试图打印出尽可能多的关于类加载器并更改为不同的类加载器。
公共静态最终无效createPDFWindowShell(IStartService服务,最终对象外壳,最终对象globalClassLoader)抛出异常{
}
这是错误:
-