0

当我运行任何sqlcli命令时,在 Darwin Kernel Version 12.4.0 上运行 SQL Developer,我收到以下错误:

box:sqldeveloper user$ ./sqlcli format input=sqlFile.sql output=outSqlFile.sql
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at java.lang.String.substring(String.java:1911)
at oracle.dbtools.raptor.scriptrunner.utils.SqlCli.processArgs(SqlCli.java:43)
at oracle.dbtools.raptor.scriptrunner.utils.SqlCli.main(SqlCli.java:118)

关于从哪里开始故障排除的任何想法?

4

1 回答 1

1

这个早期采用者版本发行说明说:

所有 SQL Developer 4.0 Early Adopter 问题都可以在 Oracle SQL Developer论坛上报告。用4.0EA1标记主题。

话虽如此,它看起来像是期待一个连接字符串作为第一个参数,我猜索引错误来自它寻找一个@符号(但这只是一个猜测,基于尝试一些值)。使用虚拟值我得到一个不同的错误:

bash ./sqlcli a/b@c
Exception in thread "main" java.lang.NoClassDefFoundError: oracle/ide/Version
    at oracle.dbtools.db.DBUtil.<clinit>(DBUtil.java:1703)
    at oracle.dbtools.raptor.scriptrunner.utils.SqlCli.processArgs(SqlCli.java:49)
    at oracle.dbtools.raptor.scriptrunner.utils.SqlCli.main(SqlCli.java:118)
Caused by: java.lang.ClassNotFoundException: oracle.ide.Version
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 3 more

我安装了即时客户端并设置了 DYLD_LIBRARY_PATH,所以我不确定那是什么。这是因为CP设置sqlcli错误;javatools版本应该是 12.1.2 :

#CP=${CP}:modules/oracle.javatools_11.1.1/javatools-nodeps.jar
CP=${CP}:modules/oracle.javatools_12.1.2/javatools-nodeps.jar

通过这种更改,我开始收到有关连接的明显错误,然后使用有效的连接字符串告诉我:

Exception in thread "main" java.io.FileNotFoundException: format.sql (No such file or directory)
...

所以它试图运行一个名为 的脚本format,而不是格式化现有文件。我认为您使用了错误的工具。

命令行客户端已被重写,并且sdcli似乎可以工作。我刚刚下载并扩展了测试版,并安装了 JDK 7u25,所以这可能与您需要做的不太匹配:

cd SQLDeveloper.app/Contents/Resources/sqldeveloper/sqldeveloper/bin
bash ./sdcli format input=/tmp/in.sql output=/tmp/out.sql

我需要将JDK路径设置/usr为第一次:

Type the full pathname of a J2SE installation (or Ctrl-C to quit), the path will be stored in ~/.sqldeveloper/jdk
/usr

...但不是在随后的运行中。

 Oracle SQL Developer
 Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.

Sep 10, 2013 10:04:27 AM javax.ide.extension.spi.DefaultElementContext resolveResource
SEVERE: jar:/file:/Users/alex/Downloads/SQLDeveloper.app/Contents/Resources/sqldeveloper/sqldeveloper/extensions/oracle.sqldeveloper.migration.application.jar!/META-INF/extension.xml:16: Resource not found: '${SCRATCH_COMMAND_ICON}'.
Success!

SCRATCH_COMMAND_ICON错误是一个已知的“无害但令人讨厌”的问题,您显然可以忽略它。

于 2013-09-10T06:49:53.773 回答