当前位置: 首页 > 知识库问答 >
问题:

在jenkins docker中编译时,如何“解决在源代码1.5中不支持lambda表达式的问题[错误]”

仲孙华奥
2023-03-14

我正在尝试学习jenkins教程:

https://www.youtube.com/watch?v=FonVQNqLWiE

但我正试图在dockerized jenkins中做到这一点。为此,我不创建Windows虚拟机,而是运行官方jenkins docker映像:

$ docker pull jenkins/jenkins:lts
$ docker run -P jenkins/jenkins:lts

为了继续到第6章,为了确保maven可用,我用以下命令进入容器:

$ docker exec -it -u root amazing_bose bash

amazing_bose是docker分配给机器的随机名称)然后,在里面我这样做:

# apt-get update
# apt-get install maven
# which mvn
/usr/bin/mvn
# mvn --version
Apache Maven 3.3.9
Maven home: /usr/share/maven
Java version: 1.8.0_232, vendor: Oracle Corporation
Java home: /usr/local/openjdk-8/jre
Default locale: en, platform encoding: UTF-8
OS name: "linux", version: "4.9.184-linuxkit", arch: "amd64", family: "unix"

在第六章之前,一切都很好。存储库是https://github.com/executeautomation/cucumberbasic,码头工人的jenkins控制台中的编译结果以以下内容结束:

Downloaded: https://repo.maven.apache.org/maven2/com/google/collections/google-collections/1.0/google-collections-1.0.jar (625 KB at 884.7 KB/sec)
[INFO] Changes detected - recompiling the module!
[WARNING] File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent!
[INFO] Compiling 1 source file to /var/jenkins_home/workspace/TestJenkinsXavi/target/classes
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 18.532 s
[INFO] Finished at: 2019-11-15T12:40:01+00:00
[INFO] Final Memory: 17M/115M
[INFO] ------------------------------------------------------------------------
Finished: SUCCESS

相反,在第7章中,它建议为另一个项目构建验证maven目标:https://github.com/executeautomation/SeleniumWithCucucumber

在这里,在视频教程中,它成功编译,但当我这样做时,我得到了这个控制台的结尾:

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 18.197 s
[INFO] Finished at: 2019-11-18T08:15:03+00:00
[INFO] Final Memory: 17M/160M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.5.1:compile (default-compile) on project CucumberBasics: Compilation failure: Compilation failure:
[ERROR] /var/jenkins_home/workspace/TestJenkinsXavi/src/main/java/com/ea/Main.java:[73,61] lambda expressions are not supported in -source 1.5
[ERROR] (use -source 8 or higher to enable lambda expressions)
[ERROR] /var/jenkins_home/workspace/TestJenkinsXavi/src/main/java/com/ea/Main.java:[118,50] method references are not supported in -source 1.5
[ERROR] (use -source 8 or higher to enable method references)
[ERROR] -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException

构建步骤“调用顶级Maven目标”标记为“构建失败”已完成:失败

所以问题是:

由于它是一个封闭的容器(jenkins/jenkins:lts ),并且它是一个不是我的源代码(它来自教程的作者),我想知道我必须做什么才能使它编译< code>verify目标。

共有2个答案

陶博涉
2023-03-14

您的构建因以下情况而失败

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.5.1:compile (default-compile) on project CucumberBasics: Compilation failure: Compilation failure:
[ERROR] /var/jenkins_home/workspace/TestJenkinsXavi/src/main/java/com/ea/Main.java:[73,61] lambda expressions are not supported in -source 1.5
[ERROR] (use -source 8 or higher to enable lambda expressions)

我假设您的代码中包含 lambda 函数。尝试使用日志中指定的 -source 8 标志执行生成。这应该可以解决问题,或者至少为您提供下一个问题。

姬实
2023-03-14

解决方案是在Maven调用上指定源和目标JDK级别:

-Dmaven.compiler.source=8 -Dmaven.compiler.target=8

在Jenkins,单击Maven构建的“高级”按钮,并将这些选项添加到标记为“MAVEN_OPTS”的行中。

 类似资料:
  • 我使用maven构建我的项目。 我很困惑--mven看到我使用的是Java8。 pom.xml:

  • 但是下面的代码工作得非常好。你能帮我找出原因吗?

  • 我在Eclipse中打开了maven项目。但当我做清洁和安装,我得到以上的错误。 我将构建路径改为使用SE1.8,我的编译器也配置为使用1.8。您可以在下面的屏幕截图中看到这一点。 我在project explorer中也看到了小红叉。你可以在下面的图片中看到这一点。 我不确定为什么maven在Eclipse中配置为使用1.8时使用SE1.7。

  • 问题内容: 我使用Maven构建我的项目。 我有以下配置: D:\ freelance \ polyndrom> mvn -verion Apache Maven 3.2.3(33f8c3e1027c3ddde99d3cdebad2656a31e8fdf4; 2014-08-12T00:58:1 0 + 04:00)Maven主页:C:\ Program Files \ apache \ apac

  • 问题内容: 我有以下代码: 当我通过main方法运行它时,它运行良好,但是当我尝试对其进行编译时,抛出以下错误: 我正在使用Eclipse IDE,并尝试通过命令行进行编译。 问题答案: 默认情况下,使用Java 5来编译类。引用其文档: 还要注意,当前的默认源设置是1.5,默认目标设置是1.5,与运行Maven的JDK无关。如果要更改这些默认值,则应按照设置Java编译器的- source和-t

  • 我在构建Cordova Android应用程序时收到了这个错误信息。 错误:(159,66)错误:source 1.7中不支持lambda表达式(使用source 8或更高版本启用lambda表达式) 在我的build.gradle(模块android)和build.gradle(模块CordovaLib)上设置了以下compileOptions,如下所示: