我正在尝试列出Java类加载器加载我的类的顺序。如果我使用-verbose参数,它将列出它加载的每个接口(interface)/类,包括大量接口(interface),如可序列化、异常等。有没有办法调整这个输出,所以它只显示哪些类是加载在我的主方法定义的类中? 最佳答案 我猜你最好的选择是做以下事情:在您的main方法开始后和结束之前输出一些固定文本。将verbose输出通过管道传输到文件中使用less或grep之类的东西从main方法中查找加载在两个标签之间的类。这里有一个类似的问题和一些答案:Isthereawaytogetwh
当我的Web应用程序所依赖的jar之一尝试从jar中加载属性文件时,我遇到了问题。这是jar中的代码。static{Propertiesprops=newProperties();try{props.load(ClassLoader.getSystemResourceAsStream("someProps.properties"));}catch(IOExceptione){e.printStackTrace();}someProperty=props.getProperty("someKey");}属性文件位于Maven项目的“src/main/resources”目录中。当我在Ec
当我的Web应用程序所依赖的jar之一尝试从jar中加载属性文件时,我遇到了问题。这是jar中的代码。static{Propertiesprops=newProperties();try{props.load(ClassLoader.getSystemResourceAsStream("someProps.properties"));}catch(IOExceptione){e.printStackTrace();}someProperty=props.getProperty("someKey");}属性文件位于Maven项目的“src/main/resources”目录中。当我在Ec
如果我使用try{Class.forName("my.package.Foo");//itexistsontheclasspath}catch(ClassNotFoundExceptione){//itdoesnotexistontheclasspath}“Foo”的静态初始化block被启动。有没有办法在不启动静态初始化程序的情况下确定类“my.package.Foo”是否在类路径中? 最佳答案 尝试Class的forName(Stringname,booleaninitialize,ClassLoaderloader)方法,设置
如果我使用try{Class.forName("my.package.Foo");//itexistsontheclasspath}catch(ClassNotFoundExceptione){//itdoesnotexistontheclasspath}“Foo”的静态初始化block被启动。有没有办法在不启动静态初始化程序的情况下确定类“my.package.Foo”是否在类路径中? 最佳答案 尝试Class的forName(Stringname,booleaninitialize,ClassLoaderloader)方法,设置
我有2个jar,我们称它们为a.jar和b.jar。b.jar依赖于a.jar。在一个.jar中,我定义了一个类,我们称之为StaticClass。在StaticClass中,我定义了一个静态block,调用了一个名为“init”的方法:publicclassStaticClass{static{init();}publicvoidstaticinit(){//dosomeinitializationhere}}在b.jar中,我有一个main,所以在main中,我希望init()方法已被调用,但实际上没有。我怀疑这是因为jvm没有加载StaticClass,谁能告诉我我的结论正确吗?
我有2个jar,我们称它们为a.jar和b.jar。b.jar依赖于a.jar。在一个.jar中,我定义了一个类,我们称之为StaticClass。在StaticClass中,我定义了一个静态block,调用了一个名为“init”的方法:publicclassStaticClass{static{init();}publicvoidstaticinit(){//dosomeinitializationhere}}在b.jar中,我有一个main,所以在main中,我希望init()方法已被调用,但实际上没有。我怀疑这是因为jvm没有加载StaticClass,谁能告诉我我的结论正确吗?
我遇到异常,但找不到原因。我得到的异常(exception)是:java.lang.IllegalAccessError:triedtoaccessmethodConnected.getData(Ljava/lang/String;)Ljava/sql/ResultSet;fromclassB方法是公开的。publicclassB{publicvoidmyMethod(){Connectedconn=newConnected();//createaconnectedclassinordertoconnecttoTheDBResultSetrs=null;//createaresults
我遇到异常,但找不到原因。我得到的异常(exception)是:java.lang.IllegalAccessError:triedtoaccessmethodConnected.getData(Ljava/lang/String;)Ljava/sql/ResultSet;fromclassB方法是公开的。publicclassB{publicvoidmyMethod(){Connectedconn=newConnected();//createaconnectedclassinordertoconnecttoTheDBResultSetrs=null;//createaresults
我解决了一个非常具体的问题,其解决方案似乎是基本的:我的(Spring)应用程序的类加载器层次结构是这样的:SystemClassLoader->PlatformClassLoader->AppClassLoader如果我使用JavaCompleteableFuture来运行线程。线程的ContextClassLoader为:SystemClassLoader->PlatformClassLoader->ThreadClassLoader因此,我无法访问AppClassLoader中的任何类,尽管我必须这样做,因为所有外部库类都驻留在那里。源代码库非常大,所以我不想/不能将所有与线程相