0

我正在尝试使用国际象棋 PGN 解析库来解析 PGN 文件并简单地创建一个文本文件。

  1. 库: https ://github.com/bhlangonijr/chesslib

  2. 我的 Maven 项目: https ://github.com/divukman/chess_pgn_text/tree/master/pgntotext


问题:

  1. 我可以在 IntelliJ 中运行它(只运行主类)并且它可以工作。

  2. 如果我创建一个胖 jar(mvn 包)并使用 java -jar target/pgn-to-text-1.0-SNAPSHOT.jar 运行它,我会收到以下错误:

  Exception in thread "main" com.github.bhlangonijr.chesslib.pgn.PgnException: Error parsing PGN[1, ]:
        at com.github.bhlangonijr.chesslib.pgn.PgnHolder.loadPgn(PgnHolder.java:343)
        at chess.Main.main(Main.java:18)
Caused by: java.lang.NullPointerException
        at com.github.bhlangonijr.chesslib.pgn.PgnHolder.loadPgn(PgnHolder.java:206)
        ... 1 more

知道为什么从 IDE 运行而不是从 jar 运行时它会起作用吗?为什么会因空指针异常而失败?好像它没有正确读取文件!?!

4

2 回答 2

1

看起来 PgnProperty p 在这一行为空,如果您的输入数据在此处的格式不正确,则可能为空。可能您在 IntelliJ 和 fatjar 中使用了不同的文件,这导致了问题。

于 2019-07-27T20:44:08.820 回答
0

我对有效和无效的方法进行了一些比较。我生成的文件具有 UTF-8 编码,从 jar 文件运行时显然不起作用。

当我编辑文件并将其保存为 ANSI 时,它工作正常!所以,我将这个谜团标记为完成,我需要看看要设置什么,以便在从 jar 运行时读取 utf8 文件。

于 2019-07-28T08:23:43.923 回答