有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

异常处理Java InvocationTargetException

我使用EMC DealtUnFoundation类在DealtUnMeStudio中执行一些操作。代码运行良好。我将项目导出为可运行的JAR,然后尝试运行它。然而,我得到以下错误,我不能理解它

enter image description here

下面是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();


共 (4) 个答案

  1. # 1 楼答案

    InvocationTargetException是一个包装器。它说,“这个反射调用后面发生了一个异常”,您可以使用getCause()获取内部异常

    堆栈跟踪包含内部异常。这是一个ExceptionInInitializerError。那是另一个包装。它说,“无论您做了什么,都会导致加载一个新类,而该类的静态初始值设定项引发了一个异常”

    这个链中的最后一个例外是NullPointerException。这就是你需要解决的问题。这意味着你需要调试这件事。正如评论所指出的,这并不容易

  2. # 2 楼答案

    Ohkay我没有指出根本原因,但找到了解决方案,肯定每次都能奏效。 EMC提供了一种称为Documentum Composer的Eclipse风格,用于处理Documentum项目。由于Eclipse变体,我们可以创建其他类型的项目,比如普通Java项目、动态web项目、web服务。所以我在Documetnum Composer中重新创建了我的项目,并将其导出为JAR和whoaaa

    我试了很多次,一直都有效

    需要注意的几点:

    • 你必须更换dfc。Composer安装文件夹中的属性文件,Content Server中有一个
    • Composer中的导出到JAR向导与Eclipse中的有点不同
  3. # 3 楼答案

    以下是一些可能有用的线索。 NullPointerExceptionHashtable#put抛出,这通常是因为键或值为null

    Hashtable#putPreferenceManager.readPersistenceProperties调用,所以很可能是因为属性文件中缺少某些内容,所以该值为空

    此NPE导致无法加载DfClient

  4. # 4 楼答案

    DfPreferences是加载DFC配置文件DFC的类。财产。一定是出了什么问题