异常处理Java InvocationTargetException
我使用EMC DealtUnFoundation类在DealtUnMeStudio中执行一些操作。代码运行良好。我将项目导出为可运行的JAR,然后尝试运行它。然而,我得到以下错误,我不能理解它
下面是DocMovementHandler的代码。getSession() 实际上,这不是新代码,而是获取documentum会话的常规代码
public IDfSession getSession(String userName, String password)
{
DfClientX clientx = null;
IDfClient client = null;
IDfSession session = null;
try {
// create a client object using a factory method in DfClientX
clientx = new DfClientX();
client = clientx.getLocalClient(); //takes time
// call a factory method to create the session manager
IDfSessionManager sessionMgr = client.newSessionManager();
// create an IDfLoginInfo object and set its fields
IDfLoginInfo loginInfo = clientx.getLoginInfo();
loginInfo.setUser(userName);
loginInfo.setPassword(password);
// set single identity for all docbases
sessionMgr.setIdentity("xyz_repo", loginInfo);
session = sessionMgr.getSession("xyz_repo"); //takes time
//sessionMgr.beginTransaction();
System.out.println("Session obtaied.");
}
catch (DfServiceException dse)
{
DfLogger.debug(this, "Error while beginning transaction. ", null, dse);
dse.printStackTrace();
}
catch (Exception e)
{
DfLogger.debug(this, "Error while creating a new session. ", null, e);
e.printStackTrace();
}
return session;
}
第38行是client = clientx.getLocalClient();
# 1 楼答案
InvocationTargetException
是一个包装器。它说,“这个反射调用后面发生了一个异常”,您可以使用getCause()获取内部异常堆栈跟踪包含内部异常。这是一个
ExceptionInInitializerError
。那是另一个包装。它说,“无论您做了什么,都会导致加载一个新类,而该类的静态初始值设定项引发了一个异常”这个链中的最后一个例外是
NullPointerException
。这就是你需要解决的问题。这意味着你需要调试这件事。正如评论所指出的,这并不容易# 2 楼答案
Ohkay我没有指出根本原因,但找到了解决方案,肯定每次都能奏效。 EMC提供了一种称为Documentum Composer的Eclipse风格,用于处理Documentum项目。由于Eclipse变体,我们可以创建其他类型的项目,比如普通Java项目、动态web项目、web服务。所以我在Documetnum Composer中重新创建了我的项目,并将其导出为JAR和whoaaa
我试了很多次,一直都有效
需要注意的几点:
# 3 楼答案
以下是一些可能有用的线索。
NullPointerException
由Hashtable#put
抛出,这通常是因为键或值为nullHashtable#put
被PreferenceManager.readPersistenceProperties
调用,所以很可能是因为属性文件中缺少某些内容,所以该值为空此NPE导致无法加载
DfClient
类# 4 楼答案
DfPreferences是加载DFC配置文件DFC的类。财产。一定是出了什么问题