jjzjj

classloading

全部标签

java - Class.getResource 和 ClassLoader.getSystemResource : is there a reason to prefer one to another?

我看到Class.getResource和ClassLoader.getSystemResource都用于在Java中定位资源。有什么理由比另一个更喜欢一个吗? 最佳答案 加载资源有多种方式,每一种的含义略有不同——ClassLoader::getSystemResource()使用系统类加载器。这使用用于启动程序的类路径。如果你在一个web容器中,比如tomcat,这不会从你的WAR文件中获取资源。Class#getResource()将类的包名添加到资源名中,然后委托(delegate)给它的类加载器。如果您的资源存储在反射(r

java - 可执行 jar 中 Class.getResource() 和 ClassLoader.getResource() 的奇怪行为

我从WhatisthedifferencebetweenClass.getResource()andClassLoader.getResource()?了解到并从自己的代码中,即getClass().getResource("/path/image.png")等同于getClass().getClassLoader().getResource("path/image.png")发帖Cannotreadanimageinjarfile显示使用的问题getClass().getClassLoader().getResource("path/image.png")在可执行的jar文件中返回n

java - 可执行 jar 中 Class.getResource() 和 ClassLoader.getResource() 的奇怪行为

我从WhatisthedifferencebetweenClass.getResource()andClassLoader.getResource()?了解到并从自己的代码中,即getClass().getResource("/path/image.png")等同于getClass().getClassLoader().getResource("path/image.png")发帖Cannotreadanimageinjarfile显示使用的问题getClass().getClassLoader().getResource("path/image.png")在可执行的jar文件中返回n

java - 如何在 Java 中创建 parent-last/child-first ClassLoader,或如何覆盖已在父 CL 中加载的旧 Xerces 版本?

我想创建一个parent-last/child-first类加载器,例如一个类加载器,它将首先在子类加载器中查找类,然后才委托(delegate)给它的父类加载器来搜索类。澄清:我现在知道要获得完整的ClassLoading分离,我需要使用URLClassLoader之类的东西,将null作为它的父级,这要感谢thisanswer回答我之前的问题但是当前的问题可以帮助我解决这个问题:我的代码+依赖jar正在加载到现有系统中,使用ClassLoader将该系统的ClassLoader设置为其父级(URLClassLoader)该系统使用了一些与我需要的版本不兼容的库(例如,旧版本的Xer

java - 如何在 Java 中创建 parent-last/child-first ClassLoader,或如何覆盖已在父 CL 中加载的旧 Xerces 版本?

我想创建一个parent-last/child-first类加载器,例如一个类加载器,它将首先在子类加载器中查找类,然后才委托(delegate)给它的父类加载器来搜索类。澄清:我现在知道要获得完整的ClassLoading分离,我需要使用URLClassLoader之类的东西,将null作为它的父级,这要感谢thisanswer回答我之前的问题但是当前的问题可以帮助我解决这个问题:我的代码+依赖jar正在加载到现有系统中,使用ClassLoader将该系统的ClassLoader设置为其父级(URLClassLoader)该系统使用了一些与我需要的版本不兼容的库(例如,旧版本的Xer

php - 调用未定义的方法 Composer\\Autoload\\ClassLoader::setPsr4()

我有一个包含多个子文件夹的项目。在其中一个文件夹中,它们是一些“插件”。所有这些插件都有一个composer.json和一个供应商文件夹。我现在想构建自己的插件并创建一个新文件夹并将composer.json放入该目录。composerinstall没有任何问题,但是当我以某种方式安装插件时出现错误FastCGI:server"/fcgi-bin-php5-fpm-ezi"stderr:PHPmessage:PHPFatalerror:CalltoundefinedmethodComposer\\Autoload\\ClassLoader::setPsr4()什么会导致这个问题?我已经

路径中带有特殊字符的Java ClassLoader getResource

我有以下问题。在我们的集成测试中,我们使用不同的配置,该配置将在测试之前使用以下代码从测试资源中加载:URLresource=ClassLoader.getSystemResource("application.conf");只要路径中没有特殊字符,这就可以正常工作。例如具有以下正确路径D:/Dev/projects/#FLI/flinsta/fgraph/build/resources/test/application.conf将导致getSystemResource给出的以下错误文件路径:D:/Dev/projects/%23FLI/flinsta/fgraph/build/res

java - 我应该向 Proxy.newProxyInstance(...) 提供哪个 ClassLoader?

我已经阅读了文档,但我仍然不明白我应该提供哪个类加载器作为参数。我尝试了几个选项,但这似乎对编译或代理的行为没有影响。有点不安的是我可以将任何东西作为类加载器参数传递,包括null,并且代码仍然可以正常工作。谁能解释一下,并告诉我如果我为类加载器提供错误的参数会出现什么样的错误?我应该补充一点,对于类加载器是什么,无论是在Java中还是在一般情况下,我并没有很强的直觉概念。 最佳答案 任何类都需要有一个类加载器,因此我们必须在这里给出一个。重要的部分是这个(在thedocumentationforgetProxyClass()中):

android - ClassLoader 来替换一个预加载的类?

一般问题:是否可以使用ClassLoader替换预加载(由系统加载,例如在Android的%android%/frameworks/base/preloaded-classes文件中找到)类?具体:在我的应用程序中创建WebView之前,我试图使用DexClassLoader替换在android.net.*中找到的类。我可以获得一个Class对象,但是getMethods()例如给了我一个我期望在未修改/原始类实现中的数组。这是因为预加载类系统吗?基本设置和伪代码:修改android.net.*类,增加一些测试方法等。编译并得到classes.dexjarcfmytest.jarcla

java - classLoader 什么时候加载导入?

假设,我的类只有静态方法。将类加载到内存时,类加载器会加载每个导入的类吗?或者它只会在其中的方法需要访问它时才加载导入?问题是类加载器是在类加载到内存时加载导入,还是在某些方法要使用它们之前加载导入。如果它是第一个选项,我可能需要划分一些Util类,以便更加特化。 最佳答案 我想你可以按如下方式测试它:packagepkg1;publicclassTest{static{System.out.println("Hello111");}publicstaticvoidmeth(){System.out.println("Hello22