我的目标是通过Maven自动将独立的JRE与我的Java应用程序打包在一起。
为了实现这一点,我使用了JDK的# -*- coding: utf-8 -*-
import os
import win32api
from moviepy.editor import VideoFileClip
def short_path(unicode_path):
return win32api.GetShortPathName(unicode_path)
v1 = '“ēī①”.mp4'
print os.path.isfile(v1) # False
v2 = u'“ēī①”.mp4'
print os.path.isfile(v2) # True
# clip = VideoFileClip(v1) # IOError
# clip = VideoFileClip(v2) # UnicodeEncodeError
clip = VideoFileClip(short_path(v2)) # OK
print clip.duration
和exec-maven-plugin
。我的POM设置如下所示:
javapackager
最后, <plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.5.0</version>
<executions>
<execution>
<id>package-jar2</id>
<phase>package</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>
${env.JAVA_HOME}/bin/javapackager
</executable>
<arguments>
<argument>-deploy</argument>
<argument>-native</argument>
<argument>exe</argument>
<argument>-appclass</argument>
<argument>${app.main.class}</argument>
<argument>-srcdir</argument>
<argument>${project.build.directory}</argument>
<argument>-srcfiles</argument>
<argument>${project.build.directory}\${artifactId}-${version}.jar</argument>
<argument>-outdir</argument>
<argument>${project.build.directory}</argument>
<argument>-outfile</argument>
<argument>${project.artifactId}-${version}</argument>
<argument>-v</argument>
</arguments>
</configuration>
</execution>
</executions>
</plugin>
会发出以下错误:
javapackager
[INFO] --- exec-maven-plugin:1.5.0:exec (package-jar2) @ cli-api ---
Error: Unknown argument: D:\Archiv\Dokumente\Entwicklung\PEProjekt\repository\core\cli-api\target
[ERROR] Command execution failed.
org.apache.commons.exec.ExecuteException: Process exited with an error: -1 (Exit value: -1)
似乎是我的Unknown argument
参数。
我做错了什么?我想将我的原生JRE打包到目标目录中。
答案 0 :(得分:0)
如果你想将基础jre添加到你的包中,可以使用
--
<argument>-Bruntime</argument>
<argument>${env.JAVA_HOME}</argument>
是所有相关文件的目录,因此我只需要1 -srcdir
排除并使用-srcdir
如果您不想,请在其末尾添加path.separator