【问题标题】:Package Java 1.7+ Only Classes with JAR 1.6仅使用 JAR 1.6 打包 Java 1.7+ 类
【发布时间】:2015-06-11 18:47:24
【问题描述】:

我有一个问题,我想将文件从一个目录复制到另一个目录。

Path source = Paths.get(files[i].getPath());
Path target = Paths.get(dir.getName() + "/" + files[i].getName());
try {
    Files.copy(source, target, StandardCopyOption.REPLACE_EXISTING);
    files[i] = target.toFile();
} catch (IOException e) {
    throw new IOException("\t\tUnable to move " + files[i].getName(), e);
}

此代码确实有效,但是我运行的是 JRE 1.8,而我要运行它的系统运行的是 JRE 1.6。 Path 和 Files 仅在 JRE 1.7 之后才可用。

有没有办法可以使用 eclipse 或 java 编译器将这些类与我的 jar 文件打包。

【问题讨论】:

  • 不,不是。如果您的客户端无法安装新的 JRE 版本,那么您应该降级您的代码并重新实现必要的部分(显然,这是一项更乏味的工作)。

标签: java eclipse jar copy


【解决方案1】:

通常,您可以使用 -target 选项来生成针对特定 VM 版本的类文件。例如:javac -target 1.6。查看here 了解更多选项。 但是,当源代码中存在对您指定的目标不可用的类时,这不起作用。我相信你使用 java File IO api,你可以使用的最低目标是 1.7。

如果您对命令行感到满意,可以尝试在 Java 代码中运行操作系统命令。在我看来,这比尝试重写 File 和 Path java 类要容易得多。至少我是这样做的。

如果您不知道如何在 Java 代码中执行操作系统命令,您可以找到很好的示例 here

【讨论】:

  • 注意:(供以后的读者使用)-target 选项对于将源代码编译为与安装版本不同的版本是必需的,无论 api 的差异如何
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-14
  • 2012-02-03
  • 1970-01-01
  • 1970-01-01
  • 2013-09-19
相关资源
最近更新 更多