类型AuthenticationException也不例外,可以抛出JAVA

时间:2014-03-18 13:42:05

标签: java alfresco

我正在尝试使用Java Class AuthenticationService对alfresco进行身份验证。这是代码:

public void Authenticate() throws AuthenticationException {

authenticationService.authenticateAsGuest();

}

问题是我无法运行该功能,因为它说

No exception of type AuthenticationException can be thrown; an exception type must be a subclass of Throwable

我正在使用Alfresco 4.2。

相关课程从:

导入
import org.alfresco.repo.security.authentication.AuthenticationException;
import org.alfresco.service.cmr.security.AuthenticationService;

3 个答案:

答案 0 :(得分:1)

反编译org.alfresco.repo.security.authentication.AuthenticationException并检查。

如果您想为Java类抛出的异常创建一个有意义的名称,您可以编写自己的Exception类。 http://www.java2novice.com/java_exception_handling_examples/create_custom_exception/

如果你真的想要使用那个类,但是你怀疑你的JVM加载了错误的类,你可以在某个地方部署JSP代码(例如,将它部署在web应用程序的根文件夹中作为& #39; whereis.jsp'),启动您的Alfresco服务器,然后检查您的' whereis.jsp'的结果。页:

<%@ page import="java.security.*" %>
<%@ page import="java.net.URL" %>
<%
Class cls = org.alfresco.repo.security.authentication.AuthenticationException.class;
ProtectionDomain pDomain = cls.getProtectionDomain();
CodeSource cSource = pDomain.getCodeSource();
URL loc = cSource.getLocation();
out.println(loc);
// it should print something like "c:/jars/MyJar.jar"
%>

这将告诉您JVM正在加载的确切jar,它可能有助于您了解正在进行的操作。

答案 1 :(得分:0)

异常说明了一切:你不能因为类名这样说而抛出这样的异常。它必须来自Exception或至少实现Throwable

编辑:关于框架,可能该类没有像普通的Java异常那样被抛出。

将throws-Statement放在Authenticate方法上吗?

编辑2:根据http://dev.alfresco.com/resource/docs/java/datamodel/org/alfresco/repo/security/authentication/AuthenticationException.html,它确实实施了Throwable。你确定你不是在某种罐子里吗?例如。也许是在应用程序容器中运行的不同版本?

答案 2 :(得分:0)

我解决了这个问题。感谢MarceloR的帖子。 首先,我创建了一个我测试过的类:

public class main {

/**
 * @param args
 * @throws AuthenticationFault
 */
public static void main(String[] args) throws AuthenticationFault {
  // TODO Auto-generated method stub
  Class cls = org.alfresco.repo.security.authentication.AuthenticationException.class;
  ProtectionDomain pDomain = cls.getProtectionDomain();
  CodeSource cSource = pDomain.getCodeSource();
  URL loc = cSource.getLocation();
  System.out.println(loc);
}

运行程序后,您将获得库中缺少的类。 AuthenticationException使用此类。 我收到了错误:

 java.lang.ClassNotFoundException: org.alfresco.error.AlfrescoRuntimeException

然后我将包含org.alfresco.error.AlfrescoRuntimeException的alfresco-core.jar添加到我的类路径中。 我再次运行了Class,一切正常。

我多次犯了这个错误,并且用这种方法修复了它。

希望得到帮助!