Tag: classloader

Java EE和Java SE类加载

我在互联网上阅读的Java EE和Java SE类加载的区别在于 在Java SE中,类加载器将类加载委托给其父类加载器,然后尝试加载类本身 但是,在Java EE中,类加载器首先尝试加载类本身,然后将该类的类加载委托给其父类加载器。 请validation我的理解。 另外,为什么它的设计与Java EE中的设计相同(保持这种优势的任何优点。) 这是我听到的链接[http://www.youtube.com/watch?v=t8sQw3pGJzM]

用于热类重新加载的各种Java插件之间有什么区别?哪一个最直观?

我目前正在尝试在Java应用程序中实现热类重新加载 ,但是有很多插件可供选择,我找不到这些选项之间的良好比较 。 此外,插件的网站并不十分清楚具体function是什么以及如何使用它们。 还可以选择制作一个自定义的热门类重装ClassLoader ,但我觉得这类似于“重新发明轮子”,如果已经有这么多的插件可以完成这项工作..其他人是否同意这一点? 我发现的Java插件我认为可以完成这项工作: JRebel的 动态代码演进虚拟机(DCEVM) Fakereplace Apache Commons Java编译器Interace(JCI)FileAlterationMonitor(FAM) AgentSmith Feenix 玩框架 JBoss / WildFly OSGi的 那么有谁碰巧知道插件之间的差异是什么? 还有哪个插件最直观易用? 作为旁注:我实际想要做的是重新加载我的java应用程序的.jar文件依赖项。 我有一些java代码经常自动重新编译,然后转换为.jar文件。 它是我的java应用程序的依赖项,我的应用程序需要每次都使用此.jar文件的最新版本。

Java类加载器

任何人都可以给我一个很好的资源或者解释一下类加载器背后的概念吗? 我在类加载器http://www.onjava.com/lpt/a/5586上找到了以下资源,但仍然没有帮助。 以下问题可能看起来很愚蠢,但试图回答它们总是让我感到困惑。 为什么开发人员编写Custom类加载器,为什么不调用Bootstrap类加载器来调用自定义类呢? 有什么需要定义自定义类加载器? 为什么有这么多种类的装载机? 例如:Bootsrap,Comman,Catalina类装载机等, 提前致谢。

除了混淆之外,还可以做些什么来保护jar文件?

我担心Java可执行文件的安全性。 它们几乎不提供反编译保护。 使用像Java Decompiler这样的工具,即使是小孩也可以反编译类文件以获取原始代码。 除了代码混淆,可以做些什么来保护类文件? 加密类加载器仍然是一个神话吗?

如何防止具有META-INF \ services \ javax.xml.transform.TransformerFactory的xalan.jar接管内置在Xalan实现中的JDK 1.6?

考虑一下这段代码(完全基于飞碟的“入门”代码,保留其权利): package flyingsaucerpdf; import java.io.File; import java.io.FileOutputStream; import java.io.OutputStream; import org.xhtmlrenderer.pdf.ITextRenderer; public class PDFMaker { public static void main(String[] args) throws Exception { new PDFMaker().go(); } public void go() throws Exception { String inputFile = “sample.html”; String url = new File(inputFile).toURI().toURL().toString(); String outputFile = “firstdoc.pdf”; OutputStream os = new FileOutputStream(outputFile); ITextRenderer renderer = new ITextRenderer(); […]

java中的sysLoader.getResource()问题

我有以下代码行。 sysLoader = (URLClassLoader)Thread.currentThread().getContextClassLoader(); url = sysLoader.getResource(“tempFile.txt”); 它给出了一个奇怪的问题。 如果我从路径中没有空格的路径(文件夹名称)运行它,那么它运行正常。 但是如果路径包含任何空格(行“c:\ New Foler …”)那么它就不起作用了。 怎么解决这个? 编辑:更详细 – 我检查了sysloader对象。 sysloader – > UCP – > path 是否有一个字符%20而不是空格的路径 因此所有URL都为空。 怎么解决这个?

无法在以感叹号结尾的目录中打开资源(!)

每当在以感叹号结尾的目录中运行可执行jar时, getResourceAsStream -method都返回null。 对于以下示例,我有一个Eclipse项目具有以下目录结构: src\ (Source Folder) main\ (Package) Main.java res\ (Source Folder) images\ Logo.png 我正在阅读Logo.png如下: public static void main(String[] args) throws IOException { try (InputStream is = Main.class.getClassLoader().getResourceAsStream(“images/Logo.png”)) { Image image = ImageIO.read(is); System.out.println(image); } } 请参阅2个测试用例的附件。 首先,可执行jar从目录“D:\ test123!@#”启动而没有任何问题。 其次,可执行jar从目录“D:\ test123!@#!!!”启动,有问题。 是否不支持以感叹号结尾的目录? 代码错了吗? 提前致谢。

了解Groovy / Grails类加载器泄漏

昨天我将我的第一个Grails(2.3.6)应用程序部署到开发服务器并开始监控它。 我刚刚得到一个自动监视器,说明CPU被固定在这台机器上,所以我连接到它。 我跑了top ,发现是我的Java应用程序的PID固定服务器。 我也注意到内存是40%。 几秒钟后,CPU停止固定,降至正常水平,内存恢复到~20%范围内。 经典主要GC。 在收集的时候,我做了堆转储。 在GC之后,我在JVisualVM中打开了转储,看到大部分内存都是为org.codehaus.groovy.runtime.metaclass.MetaMethodIndex.Entry类分配的。 总共有近250,000个这样的实例,占用了大约25 MB的内存。 我用Google搜索了这个课程并看了一下它是非常有帮助的Javadocs 。 所以我仍然不知道这门课的作用。 但谷歌搜索它还带来了大约十几篇涉及这个类的相关文章(其中一些是SO问题)和Grails / Groovy应用程序的PermGen / classloader泄漏。 虽然看起来我的应用程序确实用GC清理了这些250K实例,但仍然令人不安的是它有如此多的实例,并且GC将CPU固定超过5分钟。 我的问题: 什么是这个类,Groovy用它做什么? 有人可以向我解释这个答案吗? 为什么-XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled帮助解决这个特殊问题? 为什么这个课程对PermGen特别麻烦?

如何在JBoss 5.x上使用JPA2? (或如何消除类加载隔离问题?)

我希望JBoss只使用我的war文件中的依赖项。 每次我部署这个war文件时,JBoss仍然使用自己的jar。 这是我使用的jboss-web.xml : my.package:loader=my-app.war java2ParentDelegation=false 和jboss-classloading.xml : JBoss 5.1.0.GA

JBoss和不同版本的Hibernate

我们使用的是JBoss 4.2.3,后者又带有Hibernate的3.2.1.ga版本。 我想使用支持JPA 2.0的Hibernate 3.5.1-FINAL。 我一直在尝试通过将我自己的hibernate jar放入我的WEB-INF / lib文件夹并在jboss-web.xml中为我的WAR创建自己的类加载器来完成这项工作。 com.moo.foo:archive=catalog-archive 我也尝试过: com.moo.catalog:loader=catalogLoader java2ParentDelegation=false 但是我遇到了各种各样的问题,这是我目前坚持的例外: Caused by: java.lang.NoSuchMethodException: org.hibernate.validator.ClassValidator.(java.lang.Class, java.util.ResourceBundle, org.hibernate.validator.MessageInterpolator, java.util.Map, org.hibernate.annotations.common.reflection.ReflectionManager) at java.lang.Class.getConstructor0(Unknown Source) at java.lang.Class.getDeclaredConstructor(Unknown Source) at org.hibernate.cfg.AnnotationConfiguration.applyHibernateValidatorLegacyConstraintsOnDDL(AnnotationConfiguration.java:443) 由于截止日期即将来临,我想我最好问一下它是否可能? 🙂