当我运行任何sqlcli
命令时,在Darwin内核版本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)
有关从何处开始排查的想法?
答案 0 :(得分:1)
此release notes的early adopter release说:
可以报告所有SQL Developer 4.0早期采用者问题 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
的脚本,而不是格式化现有文件。我认为你使用的是错误的工具。
命令行客户端has been rewritten和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
错误是一个众所周知的'无害但令人讨厌'的问题,您可以忽略它。