智能表登录期间出现 ClassNotFoundException
ClassNotFoundException during smartsheet login
我正在尝试使用他们的 api 登录 smartsheet,但我遇到了由 ClassNotFound 异常引起的 NoClassDefFoundError。
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;
}
}
堆栈跟踪:
Exception in thread "main" java.lang.NoClassDefFoundError:
com/fasterxml/jackson/databind/JsonDeserializer
at com.smartsheet.api.internal.SmartsheetImpl.
(SmartsheetImpl.java:279)
at com.smartsheet.api.SmartsheetBuilder.build(SmartsheetBuilder.java:258)
at smartsheet.Main.main(Main.java:27)
Caused by: java.lang.ClassNotFoundException:
com.fasterxml.jackson.databind.JsonDeserializer
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 3 more
抛出这个错误有什么特别的原因吗?我已尝试使用 smartsheetfactory 访问 smartsheet,如他们的示例程序中所示,但我遇到了同样的错误。
NoClassDefFoundError
当 class 在编译时存在但由于任何原因在运行时不可用时发生。
诊断和修复这个问题真的很难,因为问题是 class 文件在运行时在 class 路径中不可用。你这些点来解决 NoClassDefFoundError
- 确保 class 或包含 class 的 jar 是否可用
class路径。
- 如果它在应用程序的 class 路径中可用,那么很可能
class路径正在被覆盖。要解决这个问题,您需要找到
您的应用程序使用的确切 class路径。
- 如果应用程序使用多个 class 加载程序,则 classes
由一个 classloader 加载可能无法被其他 class
装载机。
在J2EE环境中,即使存在class,也可能会得到NoClassDefFoundError
,因为它可能对相应的对象不可见class 装载机。
我收到此错误的原因是因为我的构建中 API 的 JAR 文件有误。 JsonSerializer class 是一个依赖项,正确的 JAR 文件包含依赖项。
我正在尝试使用他们的 api 登录 smartsheet,但我遇到了由 ClassNotFound 异常引起的 NoClassDefFoundError。
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;
}
}
堆栈跟踪:
Exception in thread "main" java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/JsonDeserializer at com.smartsheet.api.internal.SmartsheetImpl. (SmartsheetImpl.java:279) at com.smartsheet.api.SmartsheetBuilder.build(SmartsheetBuilder.java:258) at smartsheet.Main.main(Main.java:27) Caused by: java.lang.ClassNotFoundException: com.fasterxml.jackson.databind.JsonDeserializer at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) ... 3 more
抛出这个错误有什么特别的原因吗?我已尝试使用 smartsheetfactory 访问 smartsheet,如他们的示例程序中所示,但我遇到了同样的错误。
NoClassDefFoundError
当 class 在编译时存在但由于任何原因在运行时不可用时发生。
诊断和修复这个问题真的很难,因为问题是 class 文件在运行时在 class 路径中不可用。你这些点来解决 NoClassDefFoundError
- 确保 class 或包含 class 的 jar 是否可用 class路径。
- 如果它在应用程序的 class 路径中可用,那么很可能 class路径正在被覆盖。要解决这个问题,您需要找到 您的应用程序使用的确切 class路径。
- 如果应用程序使用多个 class 加载程序,则 classes 由一个 classloader 加载可能无法被其他 class 装载机。
在J2EE环境中,即使存在class,也可能会得到NoClassDefFoundError
,因为它可能对相应的对象不可见class 装载机。
我收到此错误的原因是因为我的构建中 API 的 JAR 文件有误。 JsonSerializer class 是一个依赖项,正确的 JAR 文件包含依赖项。