1

我认为我的问题很简单,但我在这个领域并没有真正的经验。
我正在尝试使用 TOMCAT 在没有任何环境的情况下手动构建 JSP。所以我为我的页面使用了这个结构:

my-webapp
|-- WEB-INF
|   |-- lib
|   |   |-- ajar.jar
|   |   |-- bjar.jar
|   |   `-- zjar.jar
|-- b.swf
`-- index.jsp

中的库WEB-INF/lib是从 BusinessObjects location 复制java/lib的,JSP 页面中的代码:

<%@ page import="com.crystaldecisions.sdk.exception.SDKException" %>
<%@ page import="com.crystaldecisions.sdk.framework.CrystalEnterprise" %>
<%@ page import="com.crystaldecisions.sdk.framework.IEnterpriseSession" %>
<%@ page import="com.crystaldecisions.sdk.framework.ISessionMgr" %>
<%@ page import="com.crystaldecisions.sdk.occa.infostore.IInfoStore" %>
<%@ page import="com.crystaldecisions.sdk.occa.security.ILogonTokenMgr"%>

<%! String defaultToken =null; %>
<%
    try
    {
        String systemName = "XXXXX";
        String userName = "XXXXX";
        String password = "XXXXXX";
        String authType = "LDAP";

        IEnterpriseSession enterpriseSession=null;
        ISessionMgr enterpriseSessionMgr = CrystalEnterprise.getSessionMgr();
        enterpriseSession = enterpriseSessionMgr.logon(userName, password, systemName, authType);
        ILogonTokenMgr logonTokenMgr = enterpriseSession.getLogonTokenMgr();
        defaultToken = logonTokenMgr.getDefaultToken();
    }
    catch(Exception e)
    {
        out.println(e);
    }
%>

// THEN THE HTML PAGE WITH defaultToken assigned

运行页面时,我收到此错误:

org.apache.jasper.JasperException: An exception occurred processing JSP page /index.jsp at line 27

24:  
25: IEnterpriseSession enterpriseSession=null;
26:  
27: ISessionMgr enterpriseSessionMgr = CrystalEnterprise.getSessionMgr();
28:  
29: enterpriseSession = enterpriseSessionMgr.logon(userName, password, systemName, authType);
30: 


root cause

    java.lang.NoClassDefFoundError: com/businessobjects/sdk/aspect/LoggingContextAspect
        com.crystaldecisions.sdk.framework.CrystalEnterprise.getSessionMgr(CrystalEnterprise.java:1)
        org.apache.jsp.index_jsp._jspService(index_jsp.java:84)
        org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
        org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388)
        org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
        org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:723)


该页面的目的是提供一个带有硬编码凭据的 Xcelsius 仪表板,以便用户无需在平台上拥有帐户即可访问报告。

4

1 回答 1

2

我强烈建议您阅读这篇文章,它非常好:“ BusinessObjects java SDK 入门”。我从零开始,这真的很有帮助。

请注意,您需要将.jar 文件复制到 Tomcat 可以找到它们的目录,该目录在classpath中指定。我只是将它们复制到 Tomcat 的“ /lib ”文件夹中,这不是最好的主意,但它确实有效。

以下是如何将目录正确添加到 Tomcat 的类路径。

我可以建议你使用eclipse吗?

在 Eclipse 中,我为我的应用程序工作做了两件事:

  • 创建一个包含所有 BO SDK .jar 文件的java 库,并将这个库添加到我项目的Java 构建路径中,这样我就可以在开发时使用 SDK
  • 在 Tomcat 中部署应用程序时,将.jar 文件复制到 Tomcat 服务器的类路径中,以便它可以找到您正在使用的 SDK 类

我希望我对我的英语有所帮助和抱歉。

于 2014-03-28T10:53:53.240 回答