在做FTP文件操作时,遇到下面的问题:
javax.ejb.EJBTransactionRolledbackException: EJB Exception: : java.lang.NoSuchMethodError: org.apache.commons.net.ftp.FTPClient.setConnectTimeout(I)V
引用的包没有问题,代码也没有问题。但是一启动weblogic,运行程序,就出现这个异常,查阅了网络很多资料,找到了可能引起的原因:
weblogic在启动时,会加载一些自己的jar包,需要做一些配置,才能优先加载自己项目中的jar包,我的应用是一个服务,不是web项目,使用的配置是:
META-INF/weblogic-application.xml文件中加入以下配置:
<wls:prefer-application-packages>
<wls:package-name>org.apache.commons.net.*</wls:package-name>
</wls:prefer-application-packages>
如果是web项目可以在META-INF/weblogic.xml文件加入以下配置:
<wls:container-descriptor>
<wls:prefer-application-packages>
<wls:package-name>org.apache.commons.net.*</wls:package-name>
</wls:prefer-application-packages>
</wls:container-descriptor>
或:
<wls:container-descriptor>
<wls:prefer-web-inf-classes>true</wls:prefer-web-inf-classes>
</wls:container-descriptor>
META-INF/weblogic-application.xml的配置已经测试通过
我的weblogic是10.3.6
参考文章:
weblogic中使用commons-lang包报java.lang.NoSuchMethodError解决办法