如何创建多版本jar和过滤输入内容? [英] How to create multi-release jar and filtering input content?

查看:170
本文介绍了如何创建多版本jar和过滤输入内容?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想通过 jar 命令创建多版本jar(适用于Java 8和Java 9)。
有几个Netbeans IDE项目:com.jdojo.mrjar.jdk8,com.jdojo.mrjar.jdk9。
项目源代码为此处
使用命令行我转到父文件夹并运行命令。
当我尝试这样做时:

I would like to create multi-release jar (for Java 8 and Java 9) by jar command. There are several Netbeans IDE projects: com.jdojo.mrjar.jdk8, com.jdojo.mrjar.jdk9. Projects source code is here. Using command line I go to a parent folder and run command. When I try to do this:

jar --create --file mrjars/com.jdojo.mrjar.jar
    -C com.jdojo.mrjar.jdk8/build/classes .
    --release 9 -C com.jdojo.mrjar.jdk9/build/classes .

我收到一条消息:

Warning: entry META-INF/versions/9/.netbeans_automatic_build contains a class that
is identical to an entry already in the jar
Warning: entry META-INF/versions/9/.netbeans_update_resources contains a class that
is identical to an entry already in the jar
java.nio.file.NoSuchFileException: java.base/sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:85)
        at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:103)
        at java.base/sun.nio.fs.WindowsFileCopy.move(WindowsFileCopy.java:384)
        at java.base/sun.nio.fs.WindowsFileSystemProvider.move(WindowsFileSystemProvider.java:288)
        at java.base/java.nio.file.Files.move(Files.java:1413)
        at jdk.jartool/sun.tools.jar.Main.validateAndClose(Main.java:460)
        at jdk.jartool/sun.tools.jar.Main.run(Main.java:343)
        at jdk.jartool/sun.tools.jar.Main.main(Main.java:1670)

我想这是是由于存在开发环境服务文件。有没有可能过滤它们(只选择某种文件类型的文件用jar包装它们)?

I think this is due to the presence of the development environment service files. Is there any possibility of filtering them (select only the files of a certain file type for packing them by jar)?

Java平台,标准版工具参考

推荐答案

有最短的完整命令序列:

cd com.jdojo.mrjar.jdk8/build/classes && jar -c -f com.jdojo.mrjar.jar $(find -name *.class) && cd ../../.. && mv -f com.jdojo.mrjar.jdk8/build/classes/com.jdojo.mrjar.jar -t com.jdojo.mrjar.jdk9/build/classes  && cd com.jdojo.mrjar.jdk9/build/classes  && jar -u -f com.jdojo.mrjar.jar --release 9 $(find -name *.class) && cd ../../.. && mv -f com.jdojo.mrjar.jdk9/build/classes/com.jdojo.mrjar.jar -t com.jdojo.mrjar.jdk9/mrjars

执行命令的逐步说明


  1. 转到com.jdojo.mrjar.jdk8 / build / classes文件夹:
    cd com.jdojo.mrjar.jdk8 / build / classes

  2. 在这个地方运行jar命令:
    jar -c -f com.jdojo.mrjar.jar $(find -name * .class)

  3. 返回:
    cd ../../..

  4. 将创建的jar文件移动到另一个文件夹:
    mv -f com.jdojo.mrjar.jdk8 / build / classes / com.jdojo.mrjar.jar -t com。 jdojo.mrjar.jdk9 / build / classes

  5. 转到此文件夹:
    cd com.jdojo.mrjar.jdk9 / build / classes

  6. 更新移动的jar文件:
    jar -u -f com.jdojo.mrjar.jar - -release 9 $(找-name * .class)

  7. 返回:
    cd ../../ ..

  8. 将更新的jar文件移动到目的地文件夹:
    mv -f com.jdojo.mrjar.jdk9 / build / classes / com.jdojo.mrjar.jar -t com.jdojo.mrjar.jdk9 / mrjars

  1. go to "com.jdojo.mrjar.jdk8/build/classes" folder:
    cd com.jdojo.mrjar.jdk8/build/classes
  2. run jar command in this place:
    jar -c -f com.jdojo.mrjar.jar $(find -name *.class)
  3. go back:
    cd ../../..
  4. move created jar file to an other folder:
    mv -f com.jdojo.mrjar.jdk8/build/classes/com.jdojo.mrjar.jar -t com.jdojo.mrjar.jdk9/build/classes
  5. go to this folder:
    cd com.jdojo.mrjar.jdk9/build/classes
  6. updating moved jar file:
    jar -u -f com.jdojo.mrjar.jar --release 9 $(find -name *.class)
  7. go back:
    cd ../../..
  8. moving updated jar file to destination folder:
    mv -f com.jdojo.mrjar.jdk9/build/classes/com.jdojo.mrjar.jar -t com.jdojo.mrjar.jdk9/mrjars

也许,可能会有一个较短的解决方案。

Perhaps, there may be a shorter solution.

这篇关于如何创建多版本jar和过滤输入内容?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆