Java ClassNotFoundException仅依赖于JDK7更新版本?

Java ClassNotFoundException仅依赖于JDK7更新版本?,java,jboss,log4j,classnotfoundexception,ear,Java,Jboss,Log4j,Classnotfoundexception,Ear,我继承了一个JBOSS 4.2.3.GA.ear项目,在这个项目中,如果我使用JDK 7u45构建它,所有东西都可以加载并运行良好,但是如果我使用JDK 7的任何更新版本(例如7u76、7u79、7u80)构建它,则无法在JBOSS引导程序的早期加载和运行 JBOSS服务器本身在Java1.7.045上运行 记录的失败原因是实际存在的类的ClassNofFoundException(即使是失败的.ear): 通常,我很容易找到ClassNofFoundException的原因,但考虑到以下事实,

我继承了一个JBOSS 4.2.3.GA.
ear
项目,在这个项目中,如果我使用JDK 7u45构建它,所有东西都可以加载并运行良好,但是如果我使用JDK 7的任何更新版本(例如7u76、7u79、7u80)构建它,则无法在JBOSS引导程序的早期加载和运行

JBOSS服务器本身在Java1.7.045上运行

记录的失败原因是实际存在的类的ClassNofFoundException(即使是失败的.ear):

通常,我很容易找到ClassNofFoundException的原因,但考虑到以下事实,这次我感到困惑:

  • .ear
    的整个环境(包括类路径!)是相同的

  • 前面提到的“未找到类”dbs.common.logger.CsvLayout位于common.jar文件中,路径与它应该位于的路径完全相同

  • 构建中没有任何错误

  • 在其他人的开发工作站(相同的Eclipse等)上,使用JDK 7u79构建
    .ear
    (即比7u45更新得晚),会产生一个正确加载和运行的.ear(在相同的服务器和环境上)

  • 有什么可能解释这种ClassNofFoundException?

    我错过了什么


    更新: 比较正在运行的common.jar文件和未运行的common.jar文件之间的“notfound”CsvLayout.class,可以看出该文件的主要版本有所不同。工作的有
    0x33
    (JavaSE7),失败的有
    0x34
    (JavaSE8)


    我一直非常小心地使用仅限于jre7的执行环境。那是怎么潜入的

    问题来自这样一个事实:库common.jar:是使用java 8构建的,没有指定目标类文件版本,因此生成了一个具有java 8类文件版本的jar文件

    要用Java8构建Java7类文件,您需要

    • 纯java编译:添加target选项
      javac-target1.7
    • maven:添加属性
      1.7
    • ant:将
      添加到build.xml

    您看到的主要版本是什么?Java 7应该有51.@P.J.Meisch我刚刚更新了我的问题,包括了你问题的答案。这很奇怪:我在Java8下运行Eclipse,但我确保只选择使用Java7的执行环境。我是否错过了Eclipse/build.xml配置特性,该特性将“环境”Java从实际构建中排除?common.jar是如何构建的,在哪里构建的?确保jar被编译为Java7级别。在maven项目中,
    javac
    的参数是
    -target 1.7
    ,这将是属性
    1.8
    。显式地将其配置为7,否则编译器在Java8下运行时将使用目标版本8。这不是执行环境的问题,而是构建的问题environment@P.J.Meisch我怀疑是构建环境造成的。使用
    ant
    (build.xml),而不是maven(pom.xml)。如何将其显式配置为7?请看一看
    log4j:ERROR Could not create the Layout. Reported error follows.
    java.lang.ClassNotFoundException: dbs.common.logger.CsvLayout
            at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
            at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
            at java.security.AccessController.doPrivileged(Native Method)
            at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
            at java.lang.Class.forName0(Native Method)
            at java.lang.Class.forName(Class.java:190)
            at org.apache.log4j.helpers.Loader.loadClass(Loader.java:178)
            at org.apache.log4j.xml.DOMConfigurator.parseLayout(DOMConfigurator.java:555)
            at org.apache.log4j.xml.DOMConfigurator.parseAppender(DOMConfigurator.java:269)
            at org.apache.log4j.xml.DOMConfigurator.findAppenderByName(DOMConfigurator.java:176)
            at org.apache.log4j.xml.DOMConfigurator.findAppenderByReference(DOMConfigurator.java:191)
            at org.apache.log4j.xml.DOMConfigurator.parseChildrenOfLoggerElement(DOMConfigurator.java:523)
            at org.apache.log4j.xml.DOMConfigurator.parseCategory(DOMConfigurator.java:436)
            at org.apache.log4j.xml.DOMConfigurator.parse(DOMConfigurator.java:999)
            at org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:867)
            at org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:773)
            at org.apache.log4j.xml.DOMConfigurator.configure(DOMConfigurator.java:901)
            at org.jboss.logging.Log4jService$URLWatchTimerTask.reconfigure(Log4jService.java:643)
            at org.jboss.logging.Log4jService$URLWatchTimerTask.run(Log4jService.java:582)
            at org.jboss.logging.Log4jService.setup(Log4jService.java:460)
            at org.jboss.logging.Log4jService.createService(Log4jService.java:476)
            at org.jboss.system.ServiceMBeanSupport.jbossInternalCreate(ServiceMBeanSupport.java:260)
            at org.jboss.system.ServiceMBeanSupport.jbossInternalLifecycle(ServiceMBeanSupport.java:243)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
            at java.lang.reflect.Method.invoke(Method.java:606)
            at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
            at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
            at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:133)
            at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
            at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:142)
            at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
            at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
            at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
            at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceController.java:978)
            at com.sun.proxy.$Proxy0.create(Unknown Source)
            at org.jboss.system.ServiceController.create(ServiceController.java:330)
            at org.jboss.system.ServiceController.create(ServiceController.java:273)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
            at java.lang.reflect.Method.invoke(Method.java:606)
            at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
            at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
            at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
            at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
            at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
            at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
            at com.sun.proxy.$Proxy4.create(Unknown Source)
            at org.jboss.deployment.SARDeployer.create(SARDeployer.java:260)
            at org.jboss.deployment.MainDeployer.create(MainDeployer.java:969)
            at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:818)
            at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:782)
            at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:766)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
            at java.lang.reflect.Method.invoke(Method.java:606)
            at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
            at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
            at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:133)
            at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
            at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:142)
            at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
            at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
            at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
            at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
            at com.sun.proxy.$Proxy5.deploy(Unknown Source)
            at org.jboss.system.server.ServerImpl.doStart(ServerImpl.java:482)
            at org.jboss.system.server.ServerImpl.start(ServerImpl.java:362)
            at org.jboss.Main.boot(Main.java:200)
            at org.jboss.Main$1.run(Main.java:508)
            at java.lang.Thread.run(Thread.java:744)