该怎么做“java.library.path中没有ocijdbc11”SQL Developer错误

时间:2015-04-17 19:36:39

标签: macos oracle-sqldeveloper

我试图在我的Mac笔记本电脑(OS X 10.9.5)上的SQL Developer中创建一个TNS连接。 我收到此错误no ocijdbc11 in java.library.path我用Google搜索并发现我需要 安装oracle的即时客户端。我在这里找到了实例客户端文件:

http://www.oracle.com/technetwork/topics/intel-macsoft-096467.html

这些文件只是您需要下载并提取到某处的zip文件。 然后我找到了实际告诉你如何处理zip文件的说明:

https://docs.oracle.com/cd/E11882_01/install.112/e38228/inst_task.htm#BABHEBIG

指示说:

  

设置DYLD_LIBRARY_PATHNLS_LANG环境变量   到instantclient_11_2目录的完整路径。例如,   如果您在/bin/oracle中解压缩Instant Client zip文件   目录,然后将DYLD_LIBRARY_PATH环境变量设置为   /bin/oracle/instantclient_11_2

说明书没有告诉我的是如何永久设置环境变量以及如何使SQL工程师等GUI工具可以访问环境变量。

有没有人让SQL Developer使用instantclient?

2 个答案:

答案 0 :(得分:8)

基于@Alex Poole的答案:在启用SIP时,在El Capitan中,此doesn't seem to work,因为DYLD_LIBRARY_PATH环境变量未转移到bash ./sqldeveloper环境变量{ {1}}开始(SQLDeveloper.app/Contents/MacOS/sqldeveloper.sh的最后一行)。

解决方案:我没有编辑文件SQLDeveloper.app/Contents/MacOS/sqldeveloper.sh,而是编辑了文件SQLDeveloper.app/Contents/Resources/sqldeveloper/sqldeveloper/bin/sqldeveloper并在那里添加了export DYLD_LIBRARY_PATH=/path/to/instantclient行。

#!/bin/bash

export DYLD_LIBRARY_PATH=/path/to/instantclient

#=============================================================================
#  Launcher for Oracle SQL Developer
#  Copyright (c) 2005, Oracle. All rights reserved.
#=============================================================================

...

答案 1 :(得分:3)

如果您喜欢编辑文件,可以在内部启动脚本中设置库路径。我通过Terminal.app和vim编辑了这个,转到:

cd <wherever SQL Developer was installed/unzipped>
cd SQLDeveloper.app/Contents/MacOS
cp -p sqldeveloper.sh sqldeveloper.sh.backup
chmod o+w sqldeveloper.sh
vim sqldeveloper.sh

默认情况下,文件受到保护,因此我将其更改为可写(并先进行备份,以防万一)。如果您跳过该步骤,使用vim,您可以使用:w!保存它以保存它。

或者在Finder中找到SQLDeveloper应用程序,右键单击,然后选择“显示包内容”,然后深入查看目录 - &gt; MacOS,右键单击sqldeveloper.sh文件并选择& #39;打开&#39;和你最喜欢的文本编辑器 - TextEdit会做。当文件被锁定时,系统会提示您在某些时候将其解锁 - 可能是打开或首次编辑,但TextEdit会询问您是否要在保存时将其解锁。

但是,您进入该文件,然后可以指定添加一行来设置/导出DYLD_LIBRARY_PATH

#!/bin/bash
# Next line added for TNS connections
export DYLD_LIBRARY_PATH=/path/to/instantclient
export JAVA_HOME=`/usr/libexec/java_home -v 1.7`
here="${0%/*}"
cd "${here}"
cd ../Resources/sqldeveloper/sqldeveloper/bin
bash ./sqldeveloper -clean >>/dev/null

...其中/path/to/instantclient是您的解压缩目录;在上面引用的示例中,这将是/bin/oracle/instantclient_11_2。另请注意,这需要是64位即时客户端;如果您尝试使用32位版本,它会抱怨错误的架构。

已保存修改后的文件,重新启动SQL Developer,您的TNS连接现在应该可以正常工作。如果您希望能够使用TNS别名,还可以设置/导出指向包含tnsnames.ora文件的目录的TNS_ADMIN变量。