【问题标题】:ClassNotFoundException for skinny warClassNotFoundException 用于瘦战
【发布时间】:2013-01-15 16:22:13
【问题描述】:

我在 war 封装在 ear 中时遇到类加载问题。 那里还打包了其他 ejb 模块。有些可以通过 spring 加载,有些则不能。

想象以下场景:

someApp.ear
|- someEJBs1.jar
|- someEJBs2.jar
...
|- someEJBsX.jar
|- someWar.war

如果我尝试从 someWar.war 通过 spring 访问一些类:

  • someEJBs1.jar 可以工作
  • 但是对于 someEJBs2.jar 中的那些我得到java.lang.ClassNotFoundException

不知道问题出在哪里。 我的MANIFEST.MF 根本不包含任何类路径信息。

我已经在考虑是否有任何方法可以在运行时(可能在调试期间)查看加载的类,或者可能是为特定的 war 文件提供的类路径?

我在 glassfish 3.1.1 中运行(这是一项要求,不能对此进行更改)。

【问题讨论】:

    标签: java glassfish ejb war ear


    【解决方案1】:

    在您的代码中尝试以下调试功能:

        //Prints the Root directory
        public static void printPWD() {
            File dir1 = new File(".");
            try {
                System.out.println("Current dir : " + dir1.getCanonicalPath());
                dir1 = null;
            } catch (Exception e2) {
                e2.printStackTrace();
            }
        }
    
    
         // Prints all files on the ClassPath to the system.out
    
        public static void printClasspathFiles() {
            ClassLoader sysClassLoader = ClassLoader.getSystemClassLoader();
    
            // Get the URLs
            URL[] urls = ((URLClassLoader) sysClassLoader).getURLs();
    
            for (int i = 0; i < urls.length; i++) {
                System.out.println(urls[i].getFile());
            }
        }
    
    //prints the classpath to system.out
    print printClasspath(){
           System.out.println(System.getProperty("java.class.path"));
    }
    

    要获取所有加载的类,getAllLoadedClasses 方法会很有用。 See Here

    【讨论】:

    • 好的,测试过了,但老实说,它没有为我提供任何有用的信息。因为我无法看到可供类加载的所有 jar。但只是一些基本的玻璃鱼罐。无论如何标记为正确,因为这似乎是我可以从类加载器中得到的全部。此外,你回答了我的问题,毫无疑问:)
    【解决方案2】:

    好的,终于找到了根本原因,我忽略了spring xml configs中包定义错误的问题。 :)

    我想我应该正确阅读错误消息。并仔细检查我认为是正确的。 (这对我来说并不是什么新鲜事)

    现在它对我有用。

    【讨论】:

      猜你喜欢
      • 2014-05-10
      • 2012-07-11
      • 2020-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多