Java Maven项目-从主类运行时有效,但不能从“胖” jar运行

时间:2019-07-27 20:11:17

标签: java maven executable-jar fatjar

我正在尝试使用国际象棋PGN解析库来解析PGN文件并仅创建文本文件。

  1. lib: 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运行时为什么可以工作吗?为什么会由于空指针异常而失败?好像没有正确读取文件!?!

2 个答案:

答案 0 :(得分:1)

this行中,PgnProperty p看起来为null,如果您输入的数据格式不正确,则可以为here。可能是您在IntelliJ和fatjar中使用了不同的文件,从而导致了问题。

答案 1 :(得分:0)

我比较了哪些有效和哪些无效。 我生成的文件使用UTF-8编码,从jar文件运行时显然无法正常工作。

当我编辑文件并将其另存为ANSI时,它工作正常!因此,我将此谜题标记为完成,我需要查看要设置的内容,以便从jar运行时读取utf8文件。