有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在Oracle上建立与ESRI geodatabase直接连接的java在未处于调试模式时挂起

最近,我一直在尝试使用JavaAPI与oracle地理数据库建立直接连接

问题是,当我执行代码时,只有在调试模式下,当我一步一步地执行程序时,连接才能正常工作。在所有其他情况下,程序挂起以尝试建立连接

下面是我使用的一段代码:

public class SdeTest {  
    public static void main(String[] args) {  
        SeConnection connection = null;  
        try {  
            System.out.println("Connecting");  
            connection = new SeConnection("none", "sde:oracle11g:geobase_tns", "none", "{my-user}", "{my-password}@geobase_tns");  
            System.out.println("CONNECTION OK");  
        } catch (SeException e) {  
            e.printStackTrace();  
        } finally {  
            if(connection != null) {  
                try {  
                    connection.freeAllLocks();  
                    connection.close();  
                } catch (SeException e) {  
                    e.printStackTrace();  
                }  
            }  
        }  
    }  
}  

以下是我的系统配置:

系统:Windows 7 Professional 64位

Java:8更新40 64位

Oracle客户端:Oracle 11g 64位

ArcSDE SDK:10.2.2 64位

其他设置

1我已经创建了SDEHOME系统变量,它的值指向磁盘上的一个文件夹。在文件夹中,我创建了“bin”目录,并用以下文件填充它:

ICUDT4。动态链接库

icuuc44。动态链接库

体育。动态链接库

sg。动态链接库

xerces-c_3_1。动态链接库

sde。动态链接库

sdejavautil。动态链接库

gsrvrora11g102。动态链接库

sdeora11gsrvr102。动态链接库

2将{SDEHOME}/bin的路径添加到系统的路径中

3到{SDEHOME}/bin的路径被添加到Java VM:-Djava。图书馆路径={bin文件夹的绝对路径}

4oracle数据库很好,我可以用ArcCatalog查看我的空间数据

5以下是我对TNS的定义:

geobase_tns =

  (DESCRIPTION =

(ADDRESS_LIST =

  (ADDRESS = (PROTOCOL = TCP)(HOST = {my-host-ip})(PORT = {my-port-number}))

)

(CONNECT_DATA =

  (SERVICE_NAME = {my-service-name})

)

)

6这是我的sqlnet。ora文件:

SQLNET。身份验证服务=(无)

名字。目录_路径=(TNSNAMES,EZCONNECT)

我已经试过了

1我尝试使用其他java版本

2我尝试添加ORACLE_HOME系统变量,并将其指向我的ORACLE客户端安装

3我禁用了Windows防火墙和防病毒系统

4我尝试连接到9.3.1 oracle geodatabase和10.3 oracle geodatabase

在每种情况下,我都得到了相同的结果:进入调试模式很好,自由运行应用程序——挂起

在这一点上,我已经没有想法了。我可以在我的IDE(eclipse-mars)中看到它在SeConnection中保持不变。createDirectConnection()方法

有人能给我一些建议为什么它会这样吗?也许我在准备直接连接系统时错过了什么


共 (1) 个答案

  1. # 1 楼答案

    这是10.2.2 SDE SDK的一个错误BUG-000087489

    Java1.6肯定不会有这个问题。这就是我使用的解决方法。您也可以尝试Java 1.7或1.8的较低版本