【发布时间】:2017-10-05 08:22:51
【问题描述】:
我正在尝试逐步编写一个 java 函数,该函数可以采用 Oracle XML (BI) Publisher Report(不是商业智能中使用的 BI Publisher,而是 Oracle Applications 使用的 XML Publisher)功能,并将报告的输出提供为一块。所以基本上我想采用一个报告定义和模板来输出税务文件,而不是将税务文件返回到一个 clob 中,然后我可以使用 PLSQL 进一步操作。如果有人知道可以执行此操作的现有功能,请告诉我。
我对 Java 不太了解,我接受了这个 Stack Overflow Calling Java from PL/SQL 问题并尝试开始并扩展它。
但是我无法将某些类导入 Java 程序。
CREATE OR REPLACE AND COMPILE JAVA SOURCE NAMED "Hello" AS
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.Serializable;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import oracle.apps.xdo.oa.schema.server.TemplateHelper;
public class Hello
{
public static String world()
{
return "Hello world";
}
};
/
如果我尝试import oracle.apps.xdo.oa.schema.server.TemplateHelper;,Java 编译会失败并显示
JAVA SOURCE 的错误你好:
LINE/COL ERROR
-------- -----------------------------------------------------------------
0/0 Hello:13: cannot find symbol
0/0 symbol : class TemplateHelper
0/0 1 error
0/0 import oracle.apps.xdo.oa.schema.server.TemplateHelper;
0/0 ^
0/0 location: package oracle.apps.xdo.oa.schema.server
类 TemplateHelper 位于服务器上的 $JAVA_TOP/oracle/apps/xdo/oa/schema/server/TemplateHelper.class 下,其中 $JAVA_TOP 包含在 CLASSPATH 中。
我也试过
loadjava -user apps ./oracle/apps/xdo/oa/schema/server/TemplateHelper.class
但由于某种原因,这会返回
SQL Error while connecting with oci8 driver to default database: Closed Connection
exiting : could not open connection
即使所有其他程序都可以正常连接。
有谁知道如何导入课程?
【问题讨论】:
-
您可以尝试在类路径中包含 $JAVA_TOP/oracle/apps/xdo/oa/schema/server。你在使用任何 IDE 吗?
-
@Aura 这不使用
CLASSPATH或任何IDE - 这是将类加载到Oracle 数据库中,以便可以在内部引用它们。loadjava应用程序是执行此操作的正确方法,因此问题归结为尝试找出loadjava失败的原因并进行修复。 -
@Aura 尝试了 CLASSPATH=$CLASSPATH:/oracle/hcmgrpd1/fs2/EBSapps/comn/java/classes/oracle/apps/xdo/oa/schema/server,然后使用 SQL Plus 再次运行。没用
-
您引用的
class文件几乎肯定会依赖于同一包中的其他类,因此在您浏览时通过class加载它class将是一个非常痛苦的经历多重依赖。相反,只需使用loadjava加载包含整个包的jar。 -
@Superdooperhero Oracle 不使用
CLASSPATH系统,它有自己的内部CLASSPATH(我相信它指的是单个目录,不能修改)。使用loadjava应用程序或CREATE JAVA CLASS是向CLASSPATH添加类的方法。
标签: java oracle plsql loadjava