Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 读取XML文件dataStoreBD=DataStoreFinder.getDataStore(params)返回null_Java_Eclipse_Maven_Datastore_Geotools - Fatal编程技术网

Java 读取XML文件dataStoreBD=DataStoreFinder.getDataStore(params)返回null

Java 读取XML文件dataStoreBD=DataStoreFinder.getDataStore(params)返回null,java,eclipse,maven,datastore,geotools,Java,Eclipse,Maven,Datastore,Geotools,我在使用Eclipse开发Maven项目时遇到了一些问题。我试图在网上搜索,但没有类似的 总而言之,我正在使用WFSDataStore(geotools)从一个数据库获取特征集合,然后添加到数据库中 有两种不同的行为: 当我执行runas>Java应用程序时一切正常,代码正常工作 当我执行runas>Maven(clean-install-tomcat:runwar)时。第dataStoreBD=DataStoreFinder.getDataStore(params)行出现错误,其中数据存储为空

我在使用
Eclipse
开发
Maven项目时遇到了一些问题。我试图在网上搜索,但没有类似的

总而言之,我正在使用WFSDataStore(geotools)从一个数据库获取特征集合,然后添加到数据库中

有两种不同的行为:

  • 当我执行
    runas>Java应用程序时
    一切正常,代码正常工作
  • 当我执行
    runas>Maven
    clean-install-tomcat:runwar
    )时。第dataStoreBD=DataStoreFinder.getDataStore(params)行出现错误,其中数据存储为空: (如果要检查参数)

    publicstaticvoiddataaccess(stringgetcapabilities,WFSDataStoreFactoryDSF)引发异常{
    //变数
    //WFS连接
    Map connectionParameters=新HashMap();
    connectionParameters.put(WFSDataStoreFactory.URL.key,getCapabilities);
    connectionParameters.put(WFSDataStoreFactory.PROTOCOL.key,false);
    connectionParameters.put(WFSDataStoreFactory.LENIENT.key,true);
    connectionParameters.put(WFSDataStoreFactory.MAXFEATURES.key,“5”);
    connectionParameters.put(WFSDataStoreFactory.TIMEOUT.key,600000);
    //数据库连接
    数据存储dataStoreBD=null;
    事务=空;
    Filter=null;
    Map params=新的HashMap();
    参数put(“dbtype”,configTypeDatabase);
    参数put(“主机”,configIp);
    参数put(“端口”,配置端口);
    参数put(“schema”,configUser);
    参数put(“数据库”,配置数据库);
    参数put(“用户”,configUser);
    参数put(“passwd”,configPassword);
    参数put(“AccessToUnderlyingConnectionLowed”,true);
    dataStoreBD=DataStoreFinder.getDataStore(params);
    //等等}
    
    参数是正确的。我从存储在计算机中的配置文件中获取它们,我进行了无数次调试,以了解真正发生的情况,但可能有一个我看不到的问题。 在这段代码之后,我还有一段:

    SimpleFeatureSource initialBDFeatureSource = dataStoreBD.getFeatureSource(configDatesTable);
    FeatureIterator<SimpleFeature> ifs = initialBDFeatureSource.getFeatures().features();
    
    SimpleFeatureSource initialBDFeatureSource=dataStoreBD.getFeatureSource(configDatesTable);
    FeatureIterator ifs=initialBDFeatureSource.getFeatures().features();
    
    第一行以以下错误结束程序:

    java.lang.NullPointerException 位于com.sitep.imi.acefat.server.daemon.insertarbbddaemon.dataAccess(InsertarBBD DDaemon.java:972)


  • 首先,我部署了这个项目来尝试其他东西(使用
    tomcat7
    ,并将
    tomcat.xml
    (Eclipse工作区的项目路径
    Eclipse
    )的信息添加到context.xml(
    tomcat7
    路径:
    C:\Program Files\Apache Software Foundation\tomcat 7.0\conf

    然后我在研究连接(
    pool
    jndi
    jdbc
    ),因为我无法正确连接到我的数据库。这就是为什么我最终将
    jdbc
    (关系数据库的通用接口)连接更改为
    jndi
    (命名系统的通用接口)连接,如下所示:

    Map<String, String> params = new HashMap<String, String>();
    params.put("dbtype", configTypeDatabase);
    params.put("jndiReferenceName", "java:comp/env/jdbc/DBName");
    params.put("accessToUnderlyingConnectionAllowed", true);
    params.put("schema", configUser);
    
    Map params=newhashmap();
    参数put(“dbtype”,configTypeDatabase);
    put(“jndiReferenceName”,“java:comp/env/jdbc/DBName”);
    参数put(“AccessToUnderlyingConnectionLowed”,true);
    参数put(“schema”,configUser);
    
    我省略了一些参数,因为它们对于
    jndi
    连接来说既不重要也不无关。原因有点棘手,因为在解决它之后,我甚至无法解释它。因为永远的原因,当我试图在本地运行
    Java应用程序
    选项1
    时,它总是工作的,但我定义了一个连接它是一种查找(
    ),因此只有在您必须使用
    maven
    运行或部署它时,它才能使用
    jndi


    如果我找到更多信息,我将更新我的答案以清除或改进它。

    我假设这是web服务的一部分?您是如何构建war文件的?您可能正在破坏spi文件。@iant抱歉,但是spi文件是什么?我已经将pom.xml配置为构建.war文件。具体告诉我您想知道什么,我会的告诉您。请参阅(search FactoryFinder),如果您不小心,您可能会丢失告诉GeoTools在哪里可以找到工厂的.spi文件
    Map<String, String> params = new HashMap<String, String>();
    params.put("dbtype", configTypeDatabase);
    params.put("jndiReferenceName", "java:comp/env/jdbc/DBName");
    params.put("accessToUnderlyingConnectionAllowed", true);
    params.put("schema", configUser);