classloader相关内容

Java 枚举:两种枚举类型,每个类型都包含对彼此的引用?

有没有办法解决由两个相互引用的枚举引起的类加载问题? 我有两组枚举,Foo 和 Bar,定义如下: 公共类 EnumTest {公共枚举 Foo {A(Bar.Alpha),B(Bar.Delta),C(Bar.Alpha);私人 Foo(Bar b) {this.b = b;}公共最终酒吧 b;}公共枚举栏{阿尔法(Foo.A),测试版(Foo.C),Delta(Foo.C);私人酒吧( ..
发布时间:2021-12-29 16:25:38 Java开发

从 .war 文件加载类的顺序

我有一个关于保证的问题,如果有的话,在下面的场景中(注意问题不是“如何以不同的方式做到这一点?",问题是真的关于以下案例中的类加载顺序(以更好地了解类加载的工作原理). 这是假设的场景...有一个 .war 文件,它具有以下(部分)目录结构: WEB-INF/classes/com/acme/Bunny.class...WEB-INF/lib/acme.jar 两个 Bunny.cla ..
发布时间:2021-12-28 14:12:33 Java开发

跨类加载器的 Java 8 ScriptEngine

我需要在“内部"不同的类加载器中执行一些 javascript 代码.如果是java,则每个任务将在单独的类加载器中运行.现在我需要这是 javascript. 我是否需要在每个类加载器中创建 ScriptEngine 的新实例,还是可以跨类加载器共享一个实例? 解决方案 从你的问题来看,不清楚你为什么要寻找这样的类加载器隔离.所以,我在这里总结了 nashorn 的类加载器 - 也 ..
发布时间:2021-12-28 09:07:19 Java开发

什么时候加载 Java 类?

我在网上搜索了几个小时,没有得出任何结论. 最近我决定将 BouncyCastle 用于 SSL,但我希望它默认关闭,因此 BouncyCastle jar 可能不在类路径中. private void enableBouncyCastleForSSL() {如果(config.isBouncyCastleEnabled()){Security.insertProviderAt(new B ..
发布时间:2021-12-28 09:03:57 Java开发

加载类路径中不存在的类

假设我已经使用 Groovyc 编译了一个 Groovy 脚本,它在文件系统中生成了一个或多个 .class 文件.在 Java 应用程序中,如何将这些类动态添加到类路径以加载它们并调用它们的方法?目标是预编译 Groovy 脚本并将它们存储到数据库中,因此可以从脚本的编译版本执行评估. 解决方案 您可以创建URLClassLoader 从目录加载新类: URL dirUrl = new ..
发布时间:2021-12-23 16:28:35 Java开发

当同一类存在于同一服务器上的不同应用程序中时,类加载如何工作?

我在应用服务器上运行多个网络应用,每个网络应用 WAR 文件都包含相同 jar 文件的副本. 这是否意味着该 jar 文件中的类将在 JVM 中加载多次,对于它存在的每个 WAR 文件加载一次?接下来,如果我在这样的类中有一个静态同步方法,它是否只在它存在的 web 应用程序中的线程之间同步,但不与不同 jar 文件中的同一类中的相同方法同步?WAR文件?(希望这个问题有意义,如有必要会澄清 ..
发布时间:2021-12-22 22:07:24 Java开发

Grails 如何处理插件依赖

我正在创建一个 Grails 插件作为复杂产品的包装器.该产品与其他产品(如 hibernate)有很多依赖关系.问题是,grails 有一些相同的依赖项,但版本不同.例如.Grails -> 休眠 3.6.7其他产品 -> 休眠 3.5.6 Grails 如何处理插件依赖?Grails 是否为每个插件创建了一个单独的类加载器?可以配置吗? 提前致谢! 解决方案 Grails ..
发布时间:2021-12-22 20:50:01 其他开发

Jython CLASSPATH、sys.path 和 JDBC 驱动程序

如何在运行时将 JDBC 驱动程序添加到 Jython?使用 CLASSPATH 有效,但使用 sys.path 不适用于 zxJDBC,即使该类导入良好并且可以从 Jython 解释器提示符进行操作. 为什么这样做: $ CLASSPATH=/tmp/jtds\-1.2.5.jar ./jython*sys-package-mgr*: 处理新的 jar, '/private/tmp/jt ..
发布时间:2021-12-21 19:23:02 其他开发

如何保护/加密 Java 类?

前段时间,在我的工作中,我需要保护一些类不被其他人阅读代码.为此,我创建了一个 EncryptedClassLoader,它加载以前加密的类,也可以加载普通(未加密)的类.以这种方式工作有点复杂,测试也是如此(编译,然后加密,然后解密). 有没有免费的框架可以做我需要的,并且易于处理?我的意思是,不仅混淆,而且加密文件,所以没有人可以读取或调试那部分代码.如果我可以轻松更改加密密钥也很棒(在 ..
发布时间:2021-12-20 20:17:29 Java开发

找不到合适的类加载器

我在课堂开始时有这个: @Grab(group = 'org.ccil.cowan.tagsoup', module = 'tagsoup', version = '1.2')类 MyClass{... 我正在尝试对此类进行单元测试,但是每当我尝试运行 JUnit 4 测试时,都会收到此错误: Caused by: java.lang.RuntimeException: 找不到合适的 Cla ..
发布时间:2021-12-18 10:20:43 其他开发

从 lib 目录加载 jar 文件的顺序

谁能解释一下从 Tomcat 中的 lib 目录加载 jar 文件的顺序?是按字母顺序吗?随意?还是其他顺序? 解决方案 都在 Tomcat 的类加载方法.它不一定按字母顺序排列.如果您观察到这种行为,并且您打算让您的 web 应用程序在服务器之间保持可移植性,则应该绝对不依赖它.比如Tomcat 6“巧合"下单了,而Tomcat 8却没有. 总结一下,加载顺序如下: 引导程序 ..
发布时间:2021-12-16 21:08:32 Java开发

在不运行其静态初始化程序的情况下检查 Java 类路径中是否存在类?

如果我使用 试试 {Class.forName("my.package.Foo");//它存在于类路径中} catch(ClassNotFoundException e) {//它不存在于类路径中} “Foo"的静态初始化块被启动.有没有办法在不启动静态初始化程序的情况下确定类“my.package.Foo"是否在类路径上? 解决方案 尝试Class的forName(String n ..
发布时间:2021-12-09 21:44:38 Java开发