为什么exec-maven-plugin在java控制台命令工作时失败?

时间:2015-12-01 12:58:25

标签: java maven java-native-interface chromium-embedded

使用Java Chromium Embedded Framework(JCEF)时出现了这个问题。

JCEF使用本地SO库(libcef.so)和SO库来进行JNI绑定(libjcef.so)。我相信嵌入式Chromium会在其旁边找一个名为icudtl.dat的文件,即在库所在的目录中。

对于以下说明,假设所有这些必需文件都在同一目录中,名为jcef_libs

我使用JCEF编写了一个测试应用程序。编译后,如果我用java命令执行它,即

$ export LD_LIBRARY_PATH=/path/to/jcef_libs 
$ java -cp src/main/java:/path/to/maven/repo/jcef.jar:/path/to/maven/repo/jogl-all/2.2.4/*:/path/to/maven/repo/gluegen-rt/2.2.4/* tests.simple.MainFrame

它完美无缺

另一方面,由于未找到命名的exec-maven-plugin文件,使用icudtl.dat会引发致命错误。 POM文件配置为使用与java命令完全相同的工件

$ mvn exec:java -Dexec.mainClass="tests.simple.MainFrame"
[1201/123038:FATAL:content_main_runner.cc(721)] Check failed: base::i18n::InitializeICU().

我测试了java命令,并在icudtl.dat目录中删除了jcef_libs文件,遇到了同样的错误,即只有在找不到icudtl.dat时才会出错。

任何帮助将不胜感激。

更新

我一直在追踪maven在幕后做的事情。上面失败的mvn命令在内部执行:

java -classpath /usr/share/maven2/boot/classworlds.jar -Dclassworlds.conf=/usr/share/maven2/bin/m2.conf -Dmaven.home=/usr/share/maven2 org.codehaus.classworlds.Launcher "exec:java" "-Dexec.mainClass=tests.simple.MainFrame"

即。它通过启动器执行我的测试应用程序。我不知道这个启动器将在哪里执行我的应用程序,但是,我再次需要该目录中的icudtl.dat

我知道如何解决这个问题?

0 个答案:

没有答案