Re: SQLcl 24.3 java issues

From: Mikhail Velikikh <mvelikikh_at_gmail.com>
Date: Fri, 8 Nov 2024 12:22:57 +0000
Message-ID: <CALe4HpkRLrY1nCs=PGkstghi-YCC2gLEWBuhW8LomaQL0U9zLw_at_mail.gmail.com>



>
> Also I had to copy ojdbc11.jar from my 21c client folder over to my
> c:\sqlcl\lib folder.

ojdbc11.jar that comes with 21.3 client does not include the oracle/sql/BOOLEAN Java class whereas the ojdbc11.jar shipped with SQLcl 24.3 does:

[oracle_at_myhostname lib]$ unzip -l ojdbc11.jar.client21 oracle/sql/BOOLEAN.class
Archive: ojdbc11.jar.client21

  Length Date Time Name

  • ---------- ----- ----
  • -------
        0                     0 files

[oracle_at_myhostname lib]$ unzip -l ojdbc11.jar.sqlcl oracle/sql/BOOLEAN.class
Archive: ojdbc11.jar.sqlcl

  Length Date Time Name

  • ---------- ----- ----

     1914 07-03-2024 05:14 oracle/sql/BOOLEAN.class

  • -------
     1914                     1 file


That is why you are getting this error, which I also reproduced on Linux. You need to copy ojdbc11.jar back and resolve any issues from there.

SQLcl 24.3 (24.3.0.285.0530) is perfectly fine using OCI JDBC coming from Oracle Client 21c on Linux.
I forced a "thick" connection by using the `-thick` flag and can run queries without any issues.
I also confirmed that SQLcl uses the OCI JDBC 21 library:

[oracle_at_myhostname lib]$ lsof -p 21310 | grep ocijdbc java 21310 oracle mem REG 252,0 153584 78071644 /u01/app/oracle/tmp/client21/lib/libocijdbc21.so

On Windows it would be some DLL obviously. Rather than trying to resolve OCI library issues (check your environment variables first and then ensure that the library is present), you might as well use the local JDBC driver (it can be forced via the `-thin` flag).

On Thu, 7 Nov 2024 at 22:58, Jeff Chirco <backseatdba_at_gmail.com> wrote:

> I am able to connect to my database with SQLCL 24.3 but as soon as I
> execute any query I get this error message and it disconnects me. Windows
> 11, running 21c client, not instance client. Any one encounter this before?
>
> Running java:
> openjdk 23.0.1 2024-10-15
> OpenJDK Runtime Environment (build 23.0.1+11-39)
> OpenJDK 64-Bit Server VM (build 23.0.1+11-39, mixed mode, sharing)
>
> I've also tried regular Java from Oracle and get the same result.
>
> Exception in thread "main" java.lang.NoClassDefFoundError:
> oracle/sql/BOOLEAN
> at
> oracle.dbtools.raptor.nls.OracleNLSProvider.format(OracleNLSProvider.java:212)
> at oracle.dbtools.raptor.utils.NLSUtils.format(NLSUtils.java:187)
> at
> oracle.dbtools.raptor.format.ANSIConsoleFormatter.printColumn(ANSIConsoleFormatter.java:168)
> at
> oracle.dbtools.raptor.format.ResultSetFormatterWrapper.print(ResultSetFormatterWrapper.java:280)
> at
> oracle.dbtools.raptor.format.ResultSetFormatterWrapper.print(ResultSetFormatterWrapper.java:228)
> at
> oracle.dbtools.raptor.format.ResultsFormatter.print(ResultsFormatter.java:519)
> at
> oracle.dbtools.db.ResultSetFormatter.formatResults(ResultSetFormatter.java:137)
> at
> oracle.dbtools.db.ResultSetFormatter.formatResults(ResultSetFormatter.java:72)
> at oracle.dbtools.raptor.newscriptrunner.SQL.processResultSet(SQL.java:920)
> at oracle.dbtools.raptor.newscriptrunner.SQL.executeQuery(SQL.java:822)
> at oracle.dbtools.raptor.newscriptrunner.SQL.run(SQL.java:100)
> at
> oracle.dbtools.raptor.newscriptrunner.ScriptRunner.runSQL(ScriptRunner.java:439)
> at
> oracle.dbtools.raptor.newscriptrunner.ScriptRunner.lambda$run$0(ScriptRunner.java:249)
> at
> oracle.dbtools.raptor.newscriptrunner.ScriptRunnerContext.runWithStoredContext(ScriptRunnerContext.java:833)
> at
> oracle.dbtools.raptor.newscriptrunner.ScriptRunner.run(ScriptRunner.java:119)
> at
> oracle.dbtools.raptor.newscriptrunner.ScriptExecutor.run(ScriptExecutor.java:364)
> at
> oracle.dbtools.raptor.newscriptrunner.ScriptExecutor.run(ScriptExecutor.java:245)
> at
> oracle.dbtools.raptor.scriptrunner.cmdline.SqlCli.processLine(SqlCli.java:1223)
> at
> oracle.dbtools.raptor.scriptrunner.cmdline.SqlCli.runSqlcl(SqlCli.java:1401)
> at oracle.dbtools.raptor.scriptrunner.cmdline.SqlCli.main(SqlCli.java:370)
> Caused by: java.lang.ClassNotFoundException: oracle.sql.BOOLEAN
> at
> java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
> at
> java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
> at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:528)
> ... 20 more
>
>
>
> Also I had to copy ojdbc11.jar from my 21c client folder over to my
> c:\sqlcl\lib folder. Before I did that I would get this while trying to
> connect. Doing that solved that issue.
>
> Error Message = no ocijdbc23 in java.library.path:
>
>

--
http://www.freelists.org/webpage/oracle-l
Received on Fri Nov 08 2024 - 13:22:57 CET

Original text of this message