Tag: 类加载器

Java加载资源Class.class.getResource vs .class.getResource

两者有什么区别 ? 我的资源文件打包在根级别包中。 并且调用Class.class.getResource(“/ rec.txt”)似乎适用于我测试的特定情况。 但是,当我尝试在更大的环境(hadoop)中使用此jar作为依赖时,这不起作用(返回null)。 但是,将“Class”更改为代码中的任何特定类修复它。 有人会抛出一些光。

java字符串文字可以被垃圾收集吗? 如果是,如何certificate?

像”abc”这样的java 字符串文字可以被垃圾收集吗? 如果是,我们如何以编程方式certificate他们是GCed?

如何使用Googlereflection库扫描在运行时加载的JAR?

是否有配置reflection库的解决方案,以便它还扫描在运行时使用URLClassLoader添加的JAR? 现在,reflection只扫描ClassLoader中的URL。 这是我现在使用的配置: Reflections reflections = new Reflections(new ConfigurationBuilder().setUrls(ClasspathHelper.forClassLoader())); 我在reflection库的文档中找不到任何提示。 编辑:这是我加载jar文件的方式: File f = new File(“C:/Users/mkorsch/Desktop/test-reflections.jar”); URLClassLoader urlCl = new URLClassLoader(new URL[] {f.toURI().toURL()},System.class.getClassLoader());

管理java类路径上的冲突

我暴露了我的背景: 我有两个在独特的Weblogic Server上运行的Java程序:程序A和程序B.这些程序由两个ksh启动: programA.ksh和programB.ksh 两者都需要C.jar但是在不同的版本中(但具有完全相同的包和类): 程序A需要C-1.0.jar 程序B需要C-2.0.jar 我确切地说两个程序共享相同的weblogic类路径。 所以,我的classpath按顺序包含: ….. C-1.0.jar C-2.0.jar ….. 我怎么能这样做,每个程序找到它的好库? 例如,根据我的实际配置,程序B将始终使用C-1.0.jar而不是C-2.0.jar,因为类路径上的优先级位置。

如何检查android设备是否支持库?

我创建了一个带有IR Blaster的Android应用程序,我希望我的代码能够检查Android设备是否支持这些库。 当另一台设备安装我的应用程序时,它会崩溃。 我怎么能避免这个? 我希望我的代码能够获取有关手机是否支持我的应用的信息。

从内存动态加载JAR

我想动态加载JAR,直接加载内存。 说,我有一个包含JAR的缓冲区,我想加载JAR中的所有类,或者至少列出JAR中存在的所有文件。 (课程,图像等……)。 如果我加载的第一个类依赖于第二个类,我该怎么办? java知道如何处理这个吗? 或者我自己照顾这个?

是否可以动态加载包中包含的所有属性文件? 即MyClass.class.getResource(’*。properties’);

我熟悉在给定文件名的情况下获取属性文件的内容,显然MyClass.class.getResource(’*。properties’)不起作用,但是如何获取位于的所有属性文件的列表与我class级相同的包裹?

类加载器如何在清单类路径中加载类引用?

我使用maven来构建一个带有外部类路径添加的jar,使用addClasspath 。 当我使用java -jar artifact.jar运行该jar时,它能够从该主jar和libs目录中的所有jar加载类。 但是,如果我问系统属性java.class.path它将只列出主jar。 如果我向系统类加载器询问其url( ClassLoader.getSystemClassLoader().getURLs() ),它也只会返回主jar。 如果我询问某个库中包含的任何类的类加载器,它将返回系统类加载器。 系统类加载器如何加载这些类? 它必须对这些库有一些了解才能从这些库中加载类。 有没有办法要求它使用这种“扩展”类路径?

如何在类路径中获取包和/或类的列表?

在Java中,我可以使用ClassLoader来获取已经加载的类的列表,以及这些类的包。 但是如何获取可以加载的类列表,即在类路径上? 与包相同。 这是针对编译器的; 在解析foo.bar.Baz时,我想知道foo是否是一个包,以区别于其他任何东西。

如何访问jar文件中的文件夹内容?

我需要看一下特定包中的文件名。 目前,我正在做以下事情: ClassLoader loader = Thread.currentThread().getContextClassLoader(); URL packageUrl = loader.getResource(getPackage().replace(‘.’, ‘/’)); File packageDir = new File(packageUrl.getFile()); // Work with the files inside the directory 这实际上在Eclipse中工作正常,因为默认情况下它不打包我的应用程序。 但是,当我从jar文件运行它时,我在packageUrl上得到一个NullPointerException 。 那么,我如何获得jar中包的内容列表? 我的研究建议使用getResourceAsStream ,但我不太确定如何使用InputStream探索目录,如果可能的话。