奇怪的Java NullPointer与SQLlite和JavaFX初始化 - 路径? (Maven的)

时间:2015-07-23 21:10:49

标签: java eclipse maven jar javafx

我的项目出了问题,但我们还没找到匹配的解决方案:

我们的项目是用JAVA编写的,使用JAVAFX 1.8和SQLlite作为DB。我们用maven来建造我们的罐子。 pom安装在底部。一个好的观点是,我们正在使用JavaFX的内部化,并且也从SQLlite数据库中获取我们的ResourceBoundles。

我们的程序在eclipse中的startet工作得很好,但从jar开始时根本不起作用。

只是为了让你进入:由于我们需要一个数据库,如果不存在db文件,我们会初始化一个。在这一步中,程序的运行给出了所有必要的检查,例如检查了表,db填充了aso。它还在.jar旁边创建了db文件,但之后 - 当应该访问db时,我们得到一个NullPointer( !?)StackTrace。

我尝试启动.jar,之前从eclipse项目中复制现有的和正在运行的数据库。该例程进一步得到了一些步骤,但是由于我想从db获取实时信息(SELECT something ...),程序以catch块结束,说它无法在db中搜索。

你可能有任何线索如何调试这个?或者至少我如何在日食中重现它?

更多想法:有趣的是,如果我进入一个菜单,其中绘制了存储在数据库中的图形,一切正常......我甚至可以操纵节点的位置,重新启动程序和数据库得到它。 但是如果我想搜索节点,则抛出pom下的给定错误。 如果我改变语言,众所周知的NullPointer再次出现......

似乎语言资源可能存在问题。当我想在给定图形中添加背景图像时出现的另一个想法是,它可能在项目中的路径存在问题,因为我们已经有了 - 众所周知的.getResource()斗争...(。 pom更新)

谢谢!

First Edit:.pom中有一个错误:在添加sqlite驱动程序的正确versionentry之后,runnig得到了改进。语言现在正在运行,但提到的NullPointer仍然存在。我也无法出于某种原因导入或加载背景图片......

25.07。:如果存在db文件,程序现在正常工作。但只有在eclipse中创建db文件。如果我想在没有db的情况下运行它,这意味着它应该自己创建数据库,它会做几件事,但后来得到描述的NullPointer。

经过Sysprints的一些调试后,我发现它似乎是语言的一个问题。我们将.xml文件导入.db包含该语言的现有字符串。看来这个文件没有正确加载,但我不知道如何检查错误: - /

    try {
        // ResourceBundle bundle = new PropertyResourceBundle(inputStream);
        // Loader to load FXML, sets the location of the choose map view
        // fxml file via parameter.
        FXMLLoader loader = new FXMLLoader();

        loader.setResources(this.mainHandler.getIOHandler().getLanguage(
                locale));
        loader.setLocation(getClass().getResource(
                ViewPathEnum.CHOOSE_MAP.getPath()));

        // container for all the Items of the choose map view.
        Pane chooseMapHBox = null;

        // loads the fxml file for the mapchoose view.
        chooseMapHBox = loader.load();

.pom:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>pse15-group1</groupId>
  <artifactId>carp</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>carp</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
  <groupId>org.xerial</groupId>
  <artifactId>sqlite-jdbc</artifactId>
  <version>3.8.10.1</version>
</dependency>
  </dependencies>

    <build>
        <plugins>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.5.5</version>
                <configuration>
                    <descriptorRefs>
                       <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <mainClass>pse15group1.carp.controller.MainController</mainClass>
                        </manifest>
                    </archive>
                </configuration>
                <executions>
                    <execution>
                        <id>assemble-all</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <mainClass>pse15group1.carp.controller.MainController</mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>

        </plugins>
    </build>
</project>

其中一个被修复的错误,问题是错误的sqlite版本......

C:\....>java -jar carp-0.0.1-SNAPSHOT-jar-with-dependencies.jar
Opened database successfully
Table Map checked succesfully
Table Metrics checked succesfully
Table Node checked succesfully
Table Edge checked succesfully
Table Tag checked succesfully
Table MetricsEdge checked succesfully
Table Language checked succesfully
Table LanguageData checked succesfully
Opened database successfully
Table Map checked succesfully
Table Metrics checked succesfully
Table Node checked succesfully
Table Edge checked succesfully
Table Tag checked succesfully
Table MetricsEdge checked succesfully
Table Language checked succesfully
Table LanguageData checked succesfully
java.sql.SQLException: [SQLITE_ERROR] SQL error or missing database (ambiguous c
olumn name: map_ID)
        at org.sqlite.DB.newSQLException(DB.java:383)
        at org.sqlite.DB.newSQLException(DB.java:387)
        at org.sqlite.DB.throwex(DB.java:374)
        at org.sqlite.NativeDB.prepare(Native Method)
        at org.sqlite.DB.prepare(DB.java:123)
        at org.sqlite.Stmt.executeQuery(Stmt.java:121)
        at pse15group1.carp.model.io.SqlConnector.searchNodes(SqlConnector.java:
190)

0 个答案:

没有答案