我正在尝试使用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;
答案 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,一切正常。
我多次犯了这个错误,并且用这种方法修复了它。
希望得到帮助!