Никакое исключение типа AuthenticationException не может быть брошено JAVA

1

Я пытаюсь выполнить аутентификацию на alfresco, используя Java Class AuthenticationService. Вот код:

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;
Теги:
alfresco

3 ответа

0
Лучший ответ

Я решил проблему. Благодаря сообщению MarmceloR. Сначала я создал класс, где я тестировал это:

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

Затем я добавил alfresco-core.jar, который содержит org.alfresco.error.AlfrescoRuntimeException в мой путь к классам. Я снова побежал в класс, и все сработало нормально.

Я получил эту ошибку много раз, и я исправил ее с помощью этого метода.

Надеюсь, что помогите!

  • 0
    Привет @Tantaoui_El_Mehdi, рад, что мой ответ решил твою проблему, прими его, когда у тебя будет шанс.
1

Декомпиляция org.alfresco.repo.security.authentication.AuthenticationException и проверка.

Если вы хотите иметь значимое имя для исключения, которое будет вызывать Java-класс, вы можете написать свой собственный класс Exception. http://www.java2novice.com/java_exception_handling_examples/create_custom_exception/

Если вы действительно хотите использовать этот класс, но вы подозреваете, что ваша JVM загружается неправильно, вы можете развернуть JSP-код ниже (например, развернуть его в корневой папке веб-приложения как "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, это может помочь вам понять, что происходит.

0

В исключении говорится все: вы не можете исключить такое исключение только потому, что это имя класса. Это должно происходить из Exception или, по крайней мере, выполнять Throwable.

Изменение: относительно рамки, вероятно, класс не был разработан, чтобы быть выброшенным как обычное исключение Java.

Нужно ли выставлять throws-Statement в методе Authenticate?

Изменить 2: согласно http://dev.alfresco.com/resource/docs/java/datamodel/org/alfresco/repo/security/authentication/AuthenticationException.html он реализует Throwable. Ты уверен, что ты не в каком-то чертовом аду? Например, может быть, другая версия работает в вашем контейнере приложений?

  • 0
    это действительно пахнет проблемами загрузки класса
  • 0
    Да ! Когда я удаляю оператор throws, Eclipse предлагает мне добавить команду try catch или Add throws. В описании здесь говорится, что исключение должно быть брошено!
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню