0

我已经安装了 Oracle 客户端 ,我想使用捆绑包在我的项目目录中运行 SQL 脚本。WINDOWS.X64_213000_client.zip
sql.exe

位于sql.exe我已添加到我的 Path env var 中的以下目录中:

E:\Oracle_21c\app\client\product\21.0.0\client_1\sqldeveloper\sqldeveloper\bin

jar 文件在

E:\Oracle_21c\app\client\product\21.0.0\client_1\sqldeveloper\sqldeveloper\lib

以下作品:

cd E:\Oracle_21c\app\client\product\21.0.0\client_1\sqldeveloper

\sqldeveloper\bin\sql -LOGON user/password@tns_db_alias  
   select 'a' as a from dual;  

但是我只能从该目录运行它,如果我尝试sql.exe从路径目录运行而不限定它,bin\sql那么就会引发异常。

>sql -登录用户/密码@tns_db_alias

线程“主”java.lang.NoClassDefFoundError 中的异常:org/apache/hc/core5/http/ParseException

我该怎么做才能sql.exe通过路径运行和访问?
这样我就可以在任意目录中,例如\projects\myproj\
并使用运行脚本sql.exe

cd \projects\myproj\
sql -LOGON user/password@tns_db_alias my_db_script.sql
4

1 回答 1

1

有一个错误。

当我尝试从这个发行版中运行包含的'sql'(SQLcl)程序时 -

c:\oracle\client\product\21.0.0\client_1\bin>sql /nolog
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hc/core5/http/ParseException
        at java.lang.Class.getDeclaredConstructors0(Native Method)
        at java.lang.Class.privateGetDeclaredConstructors(Class.java:2671)
        at java.lang.Class.getConstructor0(Class.java:3075)
        at java.lang.Class.newInstance(Class.java:412)
        at oracle.dbtools.raptor.newscriptrunner.CommandRegistry.addListener(CommandRegistry.java:75)
        at oracle.dbtools.raptor.newscriptrunner.CommandRegistry.addForAllStmtsListener(CommandRegistry.java:649)
        at oracle.dbtools.commands.NetCommands.registerCommands(NetCommands.java:28)
        at oracle.dbtools.raptor.scriptrunner.cmdline.SqlCli.initSqlcl(SqlCli.java:196)
        at oracle.dbtools.raptor.scriptrunner.cmdline.SqlCli.runSqlcl(SqlCli.java:962)
        at oracle.dbtools.raptor.scriptrunner.cmdline.SqlCli.main(SqlCli.java:369)
Caused by: java.lang.ClassNotFoundException: org.apache.hc.core5.http.ParseException
        at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
        ... 10 more

转到oracle.com/sqlcl - 下载独立的 Zip。把它放在它自己的目录中,它会运行得很好。

我们将尽快更新 21c 发行版以修复此问题以供客户端下载。

解决方法,更新您的路径以包含 ..product\21.0.0\client_1\sqldeveloper\sqldeveloper\bin

如果您从该目录运行 sql.exe,它可以工作 -

在此处输入图像描述

于 2021-11-24T15:06:55.640 回答