我正在使用liferay 6.1并在Eclipse IDE上工作。
我从另一台PC复制的EJB项目(使用与我相同的JDK 1.7)。 我正在编译这个EJB项目,并将其导出为jar文件,并在liferay portlet上使用它。
所以基本上我叫ejb方法。令人惊讶的是,我可以调用所有已经存在的方法。但是现在当我在远程接口上添加新方法时,就像这样:-
@Remote
public interface PreExaminationRemote {
public String dummy();
}
实施班
@Stateless
public class PreExamination implements
PreExaminationRemote,PreExaminationLocal{
public String dummy(){
return "works";
}
}
并从我的portlet的控制器中调用它,它只会抛出未找到的方法异常。
Exception in thread "liferay/scheduler_dispatch-1"
java.lang.NoSuchMethodError:
com.test.PreExaminationRemote.dummy()Ljava/lang/String;
我正在使用ant来构建jar文件。 1.我试过清洁蚂蚁。 2.我试图清理ejb项目 3.我改变了工作区
似乎没有任何作用。
答案 0 :(得分:1)
我希望,当您使用过时的代码时,肯定会出现此异常。这可能是应用程序服务器的缓存,重复的代码(例如,同一类路径上的两个不同的jar,不同版本中的同一代码)或无法覆盖的锁定文件。
在可用的类路径中进行搜索,在重新部署之前,请不要忘记appserver-globals,您自己的WEB-INF / lib以及appserver的temp和work目录。要解决锁定的文件(例如在Windows下),请重新启动,重新部署并检查其是否仍然无法正常工作。
对于此行为,我没有看到其他任何解释。