将 JPublisher 与 jdk8 结合使用

Use JPublisher with jdk8

我有一个程序可以执行这样的命令jpub

executeCommand("jpub -u "+args[0]+"/"+args[1]+" -package="+args[3]+" -codegen=iso -url="+args[2]+" -plsqlpackage="+resultSetMain.getString(1)+" -dir "+args[4]+" -case=lower -plsqlfile="+resultSetMain.getString(1)+"_wrapper.sql,"+resultSetMain.getString(1)+"_wrapper_drop.sql -s "+resultSetMain.getString(1)+":"+resultSetMain.getString(1)+"_OUT -compile=false -omit_schema_names");

execCommand只是一个获取运行时间实例并执行命令的私有函数时:

Process pr = rt.exec(command);

我正在使用 maven 构建我的项目。
当我 运行 我的程序与 eclipse Juno 一切都很好,但是当我想迁移到最新版本的 eclipse 时 运行 mvn clean install 我有这个错误

Exception in thread "main" java.lang.NoClassDefFoundError: sun/io/CharToByteConverter

我试图构建一个包含此 class 的 jar converter 并将其添加到我的项目中,但这不起作用

<repositories>
    <repository>
        <id>my-local-repo</id>
        <url>file://${basedir}/lib</url>
    </repository>
</repositories>

<dependencies>
    <dependency>
        <groupId>ma.me</groupId>
        <artifactId>converter</artifactId>
        <version>1.0.0</version>
        </dependency>
</dependencies>

我该如何解决这个问题?

阅读 JPublisher 的文档后,我找到了一个部分,其中讲述了如何指定通过其调用 JPublisher 的 JVM doc

我们可以使用 -vm=value 参数,其中值是 JDK6 或 7 的位置,因此您可以 运行 这样的命令:

executeCommand("jpub -u "+args[0]+"/"+args[1]+" -package="+args[3]+" -codegen=iso -url="+args[2]+" -vm="+args[8]+" -plsqlpackage="+resultSetMain.getString(1)+" -dir "+args[4]+" -case=lower -plsqlfile="+resultSetMain.getString(1)+"_wrapper.sql,"+resultSetMain.getString(1)+"_wrapper_drop.sql -s "+resultSetMain.getString(1)+":"+resultSetMain.getString(1)+"_OUT -compile=false -omit_schema_names");

在我们的示例中 args[8] 包含可执行文件的路径 java 6 例如:D:\Java\jdk6\bin\java