java.lang.NoClassDefFoundError:javax / validation / Validator

时间:2014-03-25 04:19:38

标签: java validation maven

我想知道为什么我的应用会抛出此错误:

  

[ERROR] java.lang.NoClassDefFoundError:javax / validation / Validator   java.lang.ClassLoader.defineClass1的[错误](本机方法)[错误]     at java.lang.ClassLoader.defineClass(ClassLoader.java:800)[ERROR]     在   java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)   [错误]在   java.net.URLClassLoader.defineClass(URLClassLoader.java:449)[ERROR]     在java.net.URLClassLoader.access $ 100(URLClassLoader.java:71)[错误]     at java.net.URLClassLoader $ 1.run(URLClassLoader.java:361)[ERROR] at   java.net.URLClassLoader $ 1.run(URLClassLoader.java:355)[错误] at   java.security.AccessController.doPrivileged(Native Method)[ERROR] at   java.net.URLClassLoader.findClass(URLClassLoader.java:354)[错误] at   java.lang.ClassLoader.loadClass(ClassLoader.java:425)[ERROR] at   com.google.appengine.tools.development.IsolatedAppClassLoader.loadClass(IsolatedAppClassLoader.java:215)   java.lang.ClassLoader.loadClass的[错误](ClassLoader.java:358)   [错误]在   org.jboss.resteasy.core.ResourceMethod。(ResourceMethod.java:162)   [错误]在   org.jboss.resteasy.core.ResourceMethodRegistry.processMethod(ResourceMethodRegistry.java:280)   [错误]在   org.jboss.resteasy.core.ResourceMethodRegistry.addResourceFactory(ResourceMethodRegistry.java:129)   [错误]在   org.jboss.resteasy.core.ResourceMethodRegistry.addResourceFactory(ResourceMethodRegistry.java:111)   [错误]在   org.jboss.resteasy.core.ResourceMethodRegistry.addResourceFactory(ResourceMethodRegistry.java:88)   [错误]在   org.jboss.resteasy.plugins.guice.ModuleProcessor.processInjector(ModuleProcessor.java:66)   [错误]在   org.jboss.resteasy.plugins.guice.ModuleProcessor.process(ModuleProcessor.java:45)   [错误]在   org.jboss.resteasy.plugins.guice.GuiceResteasyBootstrapServletContextListener.contextInitialized(GuiceResteasyBootstrapServletContextListener.java:31)

当它具有这种依赖性时:

的pom.xml

   <dependency>
       <groupId>javax.validation</groupId>
       <artifactId>validation-api</artifactId>
       <version>1.0.0.GA</version>
       <scope>provided</scope>
   </dependency>

   <dependency>
       <groupId>javax.validation</groupId>
       <artifactId>validation-api</artifactId>
       <version>1.0.0.GA</version>
       <classifier>sources</classifier>
       <scope>provided</scope>
   </dependency>

1 个答案:

答案 0 :(得分:0)

我在这个问题上摸不着头脑,但我找到了一个适合我的解决方案。

从JBOSS文件夹(JBOSS 7和WildFly)打开standalone.xml(假设您处于独立模式)。路径应该是这样的:

/{JBOSS_ROOT_FOLDER}/standalone/configuration/standalone.xml

在该文件中,查找以下XML代码段:

<subsystem xmlns="urn:jboss:domain:ee:2.0">
...
</subsystem>

它之间会有各种各样的XML配置。添加以下内容:

<global-modules>
    <module name="{MODULE_NAME}" slot="main"/>  <--- where {MODULE_NAME} is the name of your module
</global-modules>

显然,如果您已经有&lt; global-modules&gt; 部分,请不要添加两次,但请插入您要使用的模块。这是一个奇怪的事情,但这让我的WildFly运行。

请注意''中的版本#2.0特定于WildFly(JBOSS 8)。 JBOSS 7将/应该有一个较低的版本。

注意:您必须在pom.xml的条目中保留&lt; provided&gt;