ClassNotFoundException при входе в систему
Я пытаюсь войти в smartsheet, используя их API, но я сталкиваюсь с NoClassDefFoundError, вызванным Исключением ClassNotFound.
import java.util.ArrayList;
import java.util.Properties;
import java.util.Set;
import java.util.HashSet;
import java.util.List;
import java.io.InputStream;
import java.io.FileInputStream;
import com.smartsheet.api.Smartsheet;
import com.smartsheet.api.SmartsheetFactory;
import com.smartsheet.api.models.Cell;
import com.smartsheet.api.models.Column;
import com.smartsheet.api.models.Row;
import com.smartsheet.api.models.Sheet;
import com.smartsheet.api.models.PagedResult;
import com.smartsheet.api.models.AutomationAction;
import com.google.gson.Gson;
import com.smartsheet.api.SmartsheetBuilder;
public class Main
{
//main method for our main class
public static void main(String args[]) throws Exception
{
/*line that throws error*/
Smartsheet ss = new SmartsheetBuilder().setAccessToken("myAccessToken").build();
// other parts of the program
return;
}
}
Трассировки стека:
Исключение в потоке "main" java.lang.NoClassDefFoundError: ком /fasterxml/ джексон / DataBind/JsonDeserializer на com.smartsheet.api.internal.SmartsheetImpl. (SmartsheetImpl.java:279) в com.smartsheet.api.SmartsheetBuilder.build(SmartsheetBuilder.java:258) в smartsheet.Main.main(Main.java:27) Вызывается: java.lang.ClassNotFoundException: com.fasterxml.jackson.databind.JsonDeserializer на java.net.URLClassLoader.findClass(неизвестный источник) в java.lang.ClassLoader.loadClass(Неизвестный источник) at sun.misc.Launcher$AppClassLoader.loadClass(неизвестный источник) в java.lang.ClassLoader.loadClass(Неизвестный источник) ... еще 3
Есть ли какая-то конкретная причина, почему эта ошибка выдается? Я пытался получить доступ к smartsheet с помощью smartsheetfactory, как показано в их примере программы, но я получаю ту же ошибку.
2 ответа
NoClassDefFoundError
происходит, когда класс присутствовал во время компиляции, но не был доступен во время выполнения по любой причине.
Это действительно трудно диагностировать и исправить эту проблему, поскольку проблема заключается в недоступности файла класса во время выполнения в пути к классам. Эти точки, чтобы решить NoClassDefFoundError
- Убедитесь, что класс или банка, содержащие этот класс, доступны в пути к классам.
- Если он доступен в classpath приложения, то, скорее всего, classpath переопределяется. Чтобы это исправить, вам нужно найти точный путь к классу, используемый вашим приложением.
- Если приложение использует несколько загрузчиков классов, классы, загруженные одним загрузчиком классов, могут быть недоступны другим загрузчикам классов.
В среде J2EE это может быть случай, когда один NoClassDefFoundError
даже если класс присутствует, потому что он может быть не виден соответствующему загрузчику классов.
Причина, по которой я получил эту ошибку, заключалась в том, что в моей сборке был неверный файл JAR для API. Класс JsonSerializer был зависимостью, и правильный файл JAR содержал зависимости.