ApacheCommons/lang/StringUtils 未找到
ApacheCommons/lang/StringUtils not found
众所周知,JBoss AS 7.0.0
提供了一些开箱即用的 apache-commons
依赖项。它们位于
$JBOSS_HOME$\modules\org\apache\commons\lang\main
因此,我尝试通过在 pom.xml
中声明以下依赖项来使用这些提供的依赖项:
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>${commons.version}</version>
<scope>provided</scope>
</dependency>
当我尝试使用它的类时,我得到:
java.lang.NoClassDefFoundError: org/apache/commons/lang/StringUtils
com.badmitrii.EmployeeListController.getEmployees(EmployeeListController.java:39)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:483)
org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221)
org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)
org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:777)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:706)
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:943)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857)
javax.servlet.http.HttpServlet.service(HttpServlet.java:734)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842)
javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
当然,如果我用 compile
替换 scope
标签,它就可以正常工作。但是嵌入到服务器中的库的使用有什么问题呢?可能需要额外的配置?
尝试在 META-INF/MANIFEST.MF 文件的依赖项部分添加 org.apache.commons.lang。
我认为问题是你没有声明依赖关系,所以 JBoss 没有为你加载 class..
希望对您有所帮助!
编辑:您可以使用 maven-war-plugin 或 maven-ear-plugin 通过 maven 进行设置。这是一个例子:
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.1.1</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
<!-- Maven will append the version to the finalName (which is the name
given to the generated war, and hence the context root) -->
<warName>${project.artifactId}</warName>
<archive>
<manifestEntries>
<Dependencies>org.apache.commons.lang</Dependencies>
</manifestEntries>
</archive>
</configuration>
</plugin>
众所周知,JBoss AS 7.0.0
提供了一些开箱即用的 apache-commons
依赖项。它们位于
$JBOSS_HOME$\modules\org\apache\commons\lang\main
因此,我尝试通过在 pom.xml
中声明以下依赖项来使用这些提供的依赖项:
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>${commons.version}</version>
<scope>provided</scope>
</dependency>
当我尝试使用它的类时,我得到:
java.lang.NoClassDefFoundError: org/apache/commons/lang/StringUtils
com.badmitrii.EmployeeListController.getEmployees(EmployeeListController.java:39)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:483)
org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221)
org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)
org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:777)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:706)
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:943)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857)
javax.servlet.http.HttpServlet.service(HttpServlet.java:734)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842)
javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
当然,如果我用 compile
替换 scope
标签,它就可以正常工作。但是嵌入到服务器中的库的使用有什么问题呢?可能需要额外的配置?
尝试在 META-INF/MANIFEST.MF 文件的依赖项部分添加 org.apache.commons.lang。
我认为问题是你没有声明依赖关系,所以 JBoss 没有为你加载 class..
希望对您有所帮助!
编辑:您可以使用 maven-war-plugin 或 maven-ear-plugin 通过 maven 进行设置。这是一个例子:
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.1.1</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
<!-- Maven will append the version to the finalName (which is the name
given to the generated war, and hence the context root) -->
<warName>${project.artifactId}</warName>
<archive>
<manifestEntries>
<Dependencies>org.apache.commons.lang</Dependencies>
</manifestEntries>
</archive>
</configuration>
</plugin>