0

我已经做了几天的研究,这是我的最后一颗子弹,希望你们能帮助我。

我基本上是在尝试在 Oracle 12c 关系数据库中创建一个指向我的 Oracle NoSQL 数据库表的外部表。我正在按照本教程进行操作。一切都很顺利,直到第 4 点,您使用一些库生成“.dat”文件。我对自己的数据有自己的案例,但您可以在此处查看该过程的完整示例。

执行以下命令时,我面临的问题是:

java -cp ./lib/kvstore-ee.jar:./lib/ojdbc6.jar oracle.kv.exttab.Publish -config ./exttab/nueva.xml -publish -verbose

这导致我出现以下错误:

Picked up _JAVA_OPTIONS: -Djava.security.egd=file:/dev/./urandom
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.NoClassDefFoundError: oracle/kv/KVStoreException

        at java.lang.Class.getDeclaredMethods0(Native Method)
            at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
            at java.lang.Class.privateGetMethodRecursive(Class.java:3048)
            at java.lang.Class.getMethod0(Class.java:3018)
            at java.lang.Class.getMethod(Class.java:1784)
            at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544)
            at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526)
    Caused by: java.lang.ClassNotFoundException: oracle.kv.KVStoreException
            at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
            at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
            ... 7 more

现在我继续我试图遵循的事情来解决这个问题:

  • 不同的JDK版本
  • 所涉及的 .jar 文件的不同版本。
  • 将文件切换到父目录
  • 从不同的目录执行命令。
  • 手工检查所涉及的类中的代码,看是否与Oracle提供的原始代码不同

在这一点上,我不知道是我做错了什么还是环境本身有问题。我只需要能够执行它来生成“.dat”文件,但我找不到方法。我在这里留下一些信息以防有帮助:

环境我正在使用带有 Oracle NoSQL 发行版的 Docker 容器。在这个环境中,我安装了这个 jdk 版本:

  • java 版本“1.8.0_73”Java(TM) SE 运行时环境(构建 1.8.0_73-b02)Java HotSpot(TM) 64 位服务器 VM(构建 25.73-b02,混合模式)

我在命令中提到的路径中有所有必需的 jar 文件,当然还有 XML 文件。我还可以为您提供环境变量、配置文件的代码或基本上您需要的任何东西,但我现在迷路了。提前致谢。

4

1 回答 1

0

受到Jorn Vernee建议的启发,我再次在图书馆查看课程的位置,因为我确信我在某个地方看到过它。

还有一个名为 kvstore.jar 的库,其中包含用于数据库的实用程序。如您所见,该命令没有使用这个库,在哪里oracle.kv.KVStoreException

简而言之,解决办法就是简单的把这个jar加到命令中,结果是:

java -cp ./lib/kvstore-ee.jar:./lib/kvstore.jar:./lib/ojdbc6-11.2.0.3.jar oracle.kv.exttab.Publish -config ./exttab/nueva.xml -publish -verbose

然后命令执行正常。谢谢你的主意!

于 2019-04-03T09:43:42.527 回答