【问题标题】:Force java version in debian packaging在 debian 打包中强制使用 java 版本
【发布时间】:2019-09-27 08:32:00
【问题描述】:

我尝试构建一个 java 应用程序的 debian 包。 我已经创建了所有需要的文件。我认为我唯一的问题是在 debian/rules 中使用 jh_build 时强制使用 java 版本

确实,这是我当前的文件:

#!/usr/bin/make -f

%:
    dh $@ --with javahelper --sourcedirectory=sources

override_jh_build:
    jh_build test.jar sources

我有以下输出:

jh_build test.jar sources
warning: [options] bootstrap class path not set in conjunction with -source 7
sources/org/test/preferences/WindowHandler.java:29: error: lambda expressions are not supported in -source 7
        CoalescedEventUpdater updater = new CoalescedEventUpdater(400, () -> updatePref(frame, prefs));
                                                                          ^
  (use -source 8 or higher to enable lambda expressions)
sources/org/test/preferences/CoalescedEventUpdater.java:10: error: lambda expressions are not supported in -source 7
        timer = new Timer(delay, e -> {
                                   ^
  (use -source 8 or higher to enable lambda expressions)
2 errors
1 warning
jh_build: find sources -name '*.java' -and -type f -print0 | xargs -s 512000 -0 /usr/lib/jvm/default-java/bin/javac -g -cp :debian/_jh_build.test -d debian/_jh_build.test -encoding ISO8859-1 -source 1.7 -target 1.7  returned exit code 123

所以我的问题很简单,我需要在哪里写这个选项 -source 8 ? 我尝试作为 jh_build 选项没有成功。

编辑我已经按照 cmets 中的建议尝试了这一行:

jh_build --javacopts="-source 1.8 -target 1.8" test.jar sources

输出几乎一样,除了第一句!!

warning: [options] bootstrap class path not set in conjunction with -source 8
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
1 warning
sources/org/test/preferences/WindowHandler.java:29: error: lambda expressions are not supported in -source 7
        CoalescedEventUpdater updater = new CoalescedEventUpdater(400, () -> updatePref(frame, prefs));
                                                                          ^
  (use -source 8 or higher to enable lambda expressions)
sources/org/test/preferences/CoalescedEventUpdater.java:10: error: lambda expressions are not supported in -source 7
        timer = new Timer(delay, e -> {
                                   ^
  (use -source 8 or higher to enable lambda expressions)
2 errors

【问题讨论】:

  • 请添加您的Java版本javac -version
  • @AndiCover : javac -version javac 1.8.0_212
  • 当然,代码用eclipse编译得很好,我可以运行应用程序

标签: java debian packaging jhbuild


【解决方案1】:

默认版本是 Java 7,如您在日志的最后一行 -source 1.7 中所见。

您需要将所需的版本传递给您的 jh_build,如下所示:

override_jh_build:
jh_build --javacopts="-source 1.8 -target 1.8" test.jar sources

注意:这听起来很明显,但您需要 JDK 8 或更高版本。

【讨论】:

  • 对不起,使用你的规则我有相同的输出。
  • 这次我有:未知选项:java_opts jh_build:未知选项或选项解析期间出错;中止
  • 其实这个选项有一点点不同,我已经编辑了我的问题。
  • 我发现了问题;)。
【解决方案2】:

解决办法是定义javac和javadoc的版本!!

jh_build --javacopts="-source 1.8 -target 1.8" --javadoc-opts="-source 1.8" spview.jar sources

【讨论】:

    猜你喜欢
    • 2011-04-15
    • 1970-01-01
    • 2017-04-18
    • 1970-01-01
    • 2022-07-28
    • 1970-01-01
    • 2014-11-19
    • 2023-03-27
    • 1970-01-01
    相关资源
    最近更新 更多