Maven chắc chắn không thể tìm thấy lớp ForkedBooter


217

Gần đây đến một dự án mới, tôi đang cố gắng biên dịch mã nguồn của chúng tôi. Mọi thứ đã hoạt động tốt ngày hôm qua, nhưng hôm nay là một câu chuyện khác.

Mỗi lần tôi chạy mvn clean installtrên một mô-đun, một khi đạt được các bài kiểm tra, nó sẽ gặp lỗi:

[INFO] --- maven-surefire-plugin:2.18.1:test (default-test) @ recorder ---
[INFO] Surefire report directory: /lhome/code/recorder/target/surefire-reports
[INFO] Using configured provider org.apache.maven.surefire.junitcore.JUnitCoreProvider
[INFO] parallel='none', perCoreThreadCount=true, threadCount=0, useUnlimitedThreads=false, threadCountSuites=0,     threadCountClasses=0, threadCountMethods=0, parallelOptimized=true

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Error: Could not find or load main class org.apache.maven.surefire.booter.ForkedBooter

Results :

Tests run: 0, Failures: 0, Errors: 0, Skipped: 0

và sau này:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.18.1:test (default-test) on project recorder: Execution default-test of goal org.apache.maven.plugins:maven-surefire-plugin:2.18.1:test failed: The forked VM terminated without properly saying goodbye. VM crash or System.exit called?

Tôi đang chạy trên Debian 9 (Stretch) 64 bit với OpenJDK 1.8.0_181, Maven 3.5.4, hoạt động sau proxy công ty của tôi mà tôi đã cấu hình trong đó ~/.m2/settings.xml.

Một điều kỳ lạ là phiên bản Surefire mới nhất là 2.22.1 nếu tôi nhớ chính xác. Tôi đã cố gắng chỉ định phiên bản plugin, nhưng nó không được cập nhật, nếu không thì không có thông số phiên bản plugin trong bất kỳ POM nào (cha mẹ, ông bà hoặc người này).

Tôi đã cố gắng buộc Maven thay đổi phiên bản Surefire mới nhất, nhưng giờ nó còn tệ hơn:

[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
[INFO]
[INFO] Results:
[INFO]
[INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0

[...]

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.22.1:test (default-test) on project recorder:     There are test failures.
[ERROR]
[ERROR] Please refer to /lhome/code/recorder/target/surefire-reports for the individual test results.
[ERROR] Please refer to dump files (if any exist) [date].dump, [date]-jvmRun[N].dump and [date].dumpstream.
[ERROR] The forked VM terminated without properly saying goodbye. VM crash or System.exit called?
[ERROR] Command was /bin/sh -c cd /lhome/code/recorder/ && /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java     '-javaagent:/lhome1/johndoe/.m2/repository/org/jacoco/org.jacoco.agent/0.7.4.201502262128/org.jacoco.agent-0.7.4.201502262128-runt    ime.jar=destfile=/lhome/code/recorder/target/jacoco.exec,append=true,includes=esa/*,excludes=**/api/**/*.class' -jar     /lhome/code/recorder/target/surefire/surefirebooter7426165516226884923.jar /lhome/code/recorder/target/surefire     2018-10-26T16-16-12_829-jvmRun1 surefire1721866559613511529tmp surefire_023400764142672144tmp
[ERROR] Error occurred in starting fork, check output in log
[ERROR] Process Exit Code: 1
[ERROR] org.apache.maven.surefire.booter.SurefireBooterForkException: The forked VM terminated without properly saying goodbye.     VM crash or System.exit called?
[ERROR] Command was /bin/sh -c cd /lhome/code/recorder/ && /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java     '-javaagent:/lhome1/johndoe/.m2/repository/org/jacoco/org.jacoco.agent/0.7.4.201502262128/org.jacoco.agent-0.7.4.201502262128-runt    ime.jar=destfile=/lhome/code/recorder/target/jacoco.exec,append=true,includes=esa/*,excludes=**/api/**/*.class' -jar     /lhome/code/recorder/target/surefire/surefirebooter7426165516226884923.jar /lhome/code/recorder/target/surefire     2018-10-26T16-16-12_829-jvmRun1 surefire1721866559613511529tmp surefire_023400764142672144tmp
[ERROR] Error occurred in starting fork, check output in log
[ERROR] Process Exit Code: 1
[ERROR]     at org.apache.maven.plugin.surefire.booterclient.ForkStarter.fork(ForkStarter.java:669)
[ERROR]     at org.apache.maven.plugin.surefire.booterclient.ForkStarter.run(ForkStarter.java:282)
[ERROR]     at org.apache.maven.plugin.surefire.booterclient.ForkStarter.run(ForkStarter.java:245)
[ERROR]     at org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeProvider(AbstractSurefireMojo.java:1183)
[ERROR]     at     org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeAfterPreconditionsChecked(AbstractSurefireMojo.java:1011)
[ERROR]     at org.apache.maven.plugin.surefire.AbstractSurefireMojo.execute(AbstractSurefireMojo.java:857)
[ERROR]     at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:137)
[ERROR]     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
[ERROR]     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:154)
[ERROR]     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:146)
[ERROR]     at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)
[ERROR]     at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)
[ERROR]     at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:56)
[ERROR]     at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
[ERROR]     at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:305)
[ERROR]     at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:192)
[ERROR]     at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:105)
[ERROR]     at org.apache.maven.cli.MavenCli.execute(MavenCli.java:954)
[ERROR]     at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
[ERROR]     at org.apache.maven.cli.MavenCli.main(MavenCli.java:192)
[ERROR]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[ERROR]     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[ERROR]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[ERROR]     at java.lang.reflect.Method.invoke(Method.java:498)
[ERROR]     at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
[ERROR]     at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
[ERROR]     at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
[ERROR]     at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)

1
Tôi đang gặp lỗi này trong clircle-ci. Surefire forks và forked vm in thông báo sau và thoát: "Lỗi: Không thể tìm hoặc tải lớp chính org.apache.maven.surefire.booter.ForkedBooter". Massage là trong mục tiêu / chắc chắn-báo cáo / *. Luồng. Nếu bạn chạy maven với -X nó sẽ in dòng lệnh, bạn có thể thử nó và xem vm in thông báo này.
Bruno Coutinho


Giải pháp của tôi là ngừng sử dụng open-jdks của bất kỳ phiên bản nào. không thể đủ khả năng loại không đáng tin cậy này trong một cái gì đó rất nền tảng.
Adrian M.

Sử dụng Maven dependencyManagementphần để xác định phiên bản khác nhau của plugin
jogaco

Cập nhật lên jdk 11 trên Debian là một giải pháp chắc chắn cho tôi!
rõ ràng

Câu trả lời:


251

Để sửa lỗi (năm 2018), hãy cập nhật openjdk của bạn lên phiên bản mới nhất, ít nhất là 8u191-b12. Trong trường hợp vấn đề này xuất hiện trở lại vào năm 2020, có khả năng hành vi mặc định của openjdk đã được thay đổi và sau đó bạn sẽ cần cập nhật plugin maven Surefire.

Đây là một lỗi đã được sửa trong gói openjdk-8 (hành vi lệch khỏi dòng ngược đáng kể mà không cần; thiếu bản vá ngược dòng để hoàn nguyên về việc vô hiệu hóa kiểm tra bảo mật) mà bạn vừa nâng cấp lên. Nhưng nó cũng là một lỗi trong plugin Surefire, SUREFIRE-1588 , được cho là đã sửa trong Surefire 3.0.0-M1 : rõ ràng là nó đang sử dụng các đường dẫn tuyệt đối ở một nơi mà Java sẽ chỉ cho phép các tên đường dẫn tương đối (và Debian đã kích hoạt hành vi trong tương lai rồi).

Phiên bản gói 8u181-b13-2 nêu rõ:

  • Áp dụng các bản vá từ cập nhật bảo mật 8u191-b12.

Lưu ý rằng 191-b12! = 181-b13. Các bản vá bảo mật 191-b12 vừa mới ra mắt vài ngày trước, và rõ ràng các nhà bảo trì muốn nhanh chóng đưa chúng đến cho bạn. Cập nhật hoàn toàn lên 191-b12 có thể sẽ cần thử nghiệm bổ sung (tốt, vì vậy nên có bản tải lên này, rõ ràng).

Đã có một số cách giải quyết:

  1. Thay vào đó, bạn có thể cài đặt gói trước từ snapshots.do . Sau khi hạ cấp, bạn có thể cấm phiên bản bị hỏng (nếu bạn đang sử dụng năng khiếu và không apt) sử dụng sudo aptitude forbid-version openjdk-8-jre-headless. Đối với "apt" thông thường, tôi không thấy một cơ chế cấm tương tự, vì vậy bạn có thể cần phải sử dụng ghim apt để ngăn việc nâng cấp này được cài đặt lại (hoặc bạn cứ tiếp tục hạ cấp xuống, tôi hy vọng điều này sẽ sớm được giải quyết).
  2. Theo theo dõi lỗi, thiết lập thuộc tính -Djdk.net.URLClassPath.disableClassPathURLCheck=truevới bất kỳ phương thức thông thường nào (ví dụ JAVA_FLAGS:) cũng sẽ giúp ích. Nhưng tôi đã không xác minh điều này bản thân mình. Bạn rõ ràng thậm chí có thể thêm cách giải quyết để~/.m2/settings.xml kích hoạt nó cho tất cả các bản dựng Maven của bạn một cách dễ dàng.

Như bạn có thể thấy, theo dõi lỗi hoạt động , vấn đề đã được thu hẹp và gói cố định có sẵn và một phiên bản mới của plugin Surefire sẽ sớm ra mắt!


@AdrianMadara Tôi không nhận được bản cập nhật mới, chỉ có phiên bản -2. Vẫn chưa có thông báo về việc tải lên cố định, nhưng nó đang được tiến hành. Bạn có thể chỉ cần nâng cấp lại lên phiên bản có vấn đề.
Erich Schubert

1
Tôi vừa gặp vấn đề tương tự trên Ubuntu 18.04, sử dụng OpenJDK 10.0.2. Việc chuyển JAVA_HOME sang cài đặt 'java-9-oracle' của tôi đã sửa nó.
RobAu

2
Đây là vấn đề tương ứng trong trình theo dõi vấn đề chắc chắn-maven-plugin: problems.apache.org/jira/browse/SUREFIRE-1588 (vẫn là một lỗi trong backport Canonical / Debian của các thay đổi OpenJDK có liên quan).
mirabilos

1
Làm việc xung quanh 1. không có ý nghĩa với tôi vì đó là phiên bản tôi đang gặp vấn đề. Ghi đè plugin maven-Surefire-plugin để không sử dụngSystemClassLoader cũng không hoạt động
Edwin Diaz-Mendez

1
Bạn cũng có thể thử nâng cấp lên Surefire 3.0.0-M1. Nhưng 2 đến 3 phiên bản cột mốc tất nhiên có thể phá vỡ những thứ khác.
Erich Schubert

54

Đặt useSystemClassloader thành false:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <configuration>
        <useSystemClassLoader>false</useSystemClassLoader>
    </configuration>
</plugin>

Nếu bạn không được thừa kế từ cha mẹ có phiên bản được xác định cho bạn (chẳng hạn như bộ khởi động Spring Boot), bạn cũng cần xác định điều đó.


Kích hoạt trình nạp lớp hệ thống là cách thực hành tồi tệ nhất do bạn đang chạy thử nghiệm trong quy trình plugin. Thực hành đúng là nâng cấp phiên bản của mọi plugin. Maven 3.7.0 sẽ nâng cấp các phiên bản của tất cả các plugin thuộc vòng đời mặc định. Spring không nên dính vào các phiên bản cũ và cũng không nên ghi đè lên chúng. Điều này gây ra xung đột không cần thiết trong trách nhiệm.
tibor17

52

Tôi đã tìm thấy cách giải quyết này và đã sửa các thử nghiệm của mình: định cấu hình maven-surefire-pluginkhông sử dụng trình nạp lớp hệ thống.


Theo nhà bảo trì maven-Surefire-plugin, tất cả các cách giải quyết (điều này, cài đặt forkCountthành 0 hoặc cài đặt argLinetoàn cầu) đều có vấn đề và không thể áp dụng chung.
mirabilos

Tìm tốt Nhưng vui lòng bao gồm văn bản giải pháp thực tế trong bài đăng của bạn hoặc ít nhất là xác định liên kết rõ ràng là liên kết stackoverflow. Tức là cách tiếp cận được sử dụng bởi @markoorn hữu ích hơn.
nealmcb

38

Tôi có một cách giải quyết khác. Đặt biến môi trường _JAVA_OPTIONS. Tôi đã sử dụng điều này cho các đại lý xây dựng TeamCity của chúng tôi và bây giờ các bản dựng của chúng tôi chạy tốt.

_JAVA_OPTIONS=-Djdk.net.URLClassPath.disableClassPathURLCheck=true

Một thay đổi vi phạm được gắn nhãn là sửa lỗi bảo mật thường không được đưa ra mà không có lý do và vì vậy ai đó sẽ nói với SO cách vô hiệu hóa ... chỉ cần nói
berezovskyi

26

Tôi đã đăng một biến thể được nhắm mục tiêu nhiều hơn của một trong những cách giải quyết trên trong JIRA . Thêm vào ~/.m2/settings.xml:

<profile>
    <id>SUREFIRE-1588</id>
    <activation>
        <activeByDefault>true</activeByDefault>
    </activation>
    <properties>
        <argLine>-Djdk.net.URLClassPath.disableClassPathURLCheck=true</argLine>
    </properties>
</profile>

Điều này thất bại với cảnh báo sau:[WARNING] Expected root element 'settings' but found 'profile' (position: START_TAG seen <profile>... @1:9) @ /home/nikolai/.m2/settings.xml, line 1, column 9
Nikolai

3
@Nikolai Đoạn trích trên cần được đính kèm <settings><profiles>...</profiles></settings>.
qqx

13

Tôi gặp vấn đề này trong bản dựng GitLab CI của mình, đó là sử dụng maven:3.5.4-jdk-8hình ảnh Docker.

Thay đổi nó để maven:3.5.4-jdk-8-alpinekhắc phục vấn đề.


8

Tôi đã theo liên kết này https://maven.apache.org/surefire/maven-surefire-plugin/examples/ class-loading.html và thêm plugin dưới đây trong pom.xml và nó đã hoạt động,

<project>
  [...]
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.22.1</version>
        <configuration>
          <useSystemClassLoader>false</useSystemClassLoader>
        </configuration>
      </plugin>
    </plugins>
  </build>
  [...]
</project>

8

Khi sử dụng GitLab CI / CD với 3.6.0-jdk-8hình ảnh, chỉ có thuộc tính bên dưới mới được trợ giúp (không sửa đổi pom.xml).

-Dsurefire.useSystemClassLoader=false

Đây lại là một thực hành xấu. Một trong những quyền là nâng cấp phiên bản. Luôn kiểm tra các phiên bản trong Maven Central .
tibor17

5

Đối với những người tìm kiếm câu trả lời liên quan đến Docker Maven: 3.5.x-jdk-8 trên GitLab CI, hãy xem vấn đề GitHub này .

Nó xuất hiện một 3.5.4-jdk-8hình ảnh dẫn đến việc nâng cấp lên một phiên bản Java nhỏ, bằng cách nào đó ảnh hưởng đến cơ chế rèn của Surefire.

Quay lại 3.5.3-jdk-8hình ảnh đã sửa lỗi này cho tôi trên máy chủ GitLab CI của tôi xây dựng mã Java 1.8 với Surefire 2.20.1.


5

Đề xuất ở trên để đặt thuộc tính "-Djdk.net.URLClassPath.disableClassPathURLCheck = true" KHÔNG hoạt động với tôi, nhưng cài đặt sau đây không hoạt động OK:

-DforkCount=0

2
Điều này có tác dụng là không tạo VM mới để chạy thử nghiệm, vì vậy các thử nghiệm có thể ảnh hưởng đến VM xây dựng chính.
Paŭlo Ebermann

4

Đối với Ubuntu: Cài đặt phiên bản mới nhất, nó đã sửa lỗi này

sudo apt-get update ; sudo apt-get dist-upgrade -y

Cài đặt phiên bản làm việc cuối cùng (không có bản vá bảo mật) mà không có lỗi.

sudo apt-get install openjdk-8-jdk-headless=8u181-b13-1 openjdk-8-jdk=8u181-b13-1  openjdk-8-jre=8u181-b13-1  openjdk-8-jre-headless=8u181-b13-1 openjdk-8-source=8u181-b13-1

Nếu bạn bỏ lỡ phiên bản đó, hãy sử dụng phiên bản trước đó:

sudo apt-get install openjdk-8-jdk-headless=8u162-b12-1 openjdk-8-jdk=8u162-b12-1  openjdk-8-jre=8u162-b12-1  openjdk-8-jre-headless=8u162-b12-1 openjdk-8-source=8u162-b12-1

Sau đó sử dụng ghim hoặc xem ra rằng bạn sẽ không cài đặt phiên bản bị hỏng.

Sử dụng -Djdk.net.URLClassPath.disableClassPathURLCheck=truekhông làm việc cho tôi bất cứ nơi nào tôi đã đặt cấu hình đó. Ở đâu đó trong các bài kiểm tra tích hợp của tôi, nó luôn thoát mà không có phiên bản Java cũ.

Như Erich đã đề cập, đó là một lỗi trong gói Debian quá nghiêm ngặt 911925 và plugin Surefire không hoạt động theo các quy tắc mới SUREFIRE-1588 .


Tại sao mọi người đề nghị cài đặt phiên bản không có bản vá bảo mật?! Mặc dù các đề xuất khác bao gồm bỏ qua các bài kiểm tra, huh.
berezovskyi

1
Bạn không cần phải nữa :-) Nó đã được sửa. Nhưng trong thời gian đó, tôi đã có nhiều dự án java mà tôi phải làm việc và thời gian chạy java của tôi không được tiếp xúc với bất kỳ mã mới nào từ bên ngoài. Vì vậy, có một rủi ro giám sát có thể phù hợp với tôi. Sau tất cả, đó là quyết định của riêng mọi người :-)
flob

Trên thực tế bạn đã đúng, tôi thấy rằng các nhà phát triển JDK đã quay trở lại trên prop đó theo mặc định: hg.openjdk.java.net/jdk/jdk/rev/f54dcfc5a5f8 ; nhưng thực sự nâng cấp phiên bản lớn để chắc chắn không phải là bản sửa lỗi tốt nhất đối với tôi.
berezovskyi

1
Chắc chắn rồi! Nhưng những thay đổi họ phải thực hiện là trong toàn bộ codebase và rất xâm lấn. Vì vậy, một thay đổi phiên bản nhỏ cho sửa chữa này sẽ không phải là một lựa chọn chắc chắn.
trôi nổi

1
Và thật không may, 2.x đã bị ngừng và chúng tôi sẽ phải thực hiện chuyển đổi sớm hơn sau đó: problems.apache.org/jira/browse/ Lỗi
berezovskyi

2

Tôi đã thêm sự phụ thuộc vào Junit-jupiter-engine, và nó đã hoạt động.

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.22.1</version>
    <dependencies>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <version>5.4.0</version>
        </dependency>
    </dependencies>
</plugin>

Cái ma thuật đen nào mà jupiter-plugin này làm được? Điều này làm việc cho tôi! Upvote! :-)
Hinotori

1

Gần đây tôi đã thiết lập công việc maven trên Jenkins và bị mắc kẹt trong cùng một vấn đề. Tôi đã lấy gợi ý để sửa đổi biến env JAVA và xác nhận sự cố đã được giải quyết. Đây là cách tôi đã thử nghiệm.

Trở thành người dùng "jenkins" và thay đổi thư mục thành tên dự án không gian làm việc mà bạn thiết lập cho công việc.

 $ _JAVA_OPTIONS=-Djdk.net.URLClassPath.disableClassPathURLCheck=true mvn clean install -U

 $ lsb_release -rd
 Description:   Ubuntu 16.04.5 LTS
 Release:   16.04

 $ mvn -v
 Apache Maven 3.3.9
 Maven home: /usr/share/maven
 Java version: 1.8.0_181, vendor: Oracle Corporation
 Java home: /usr/lib/jvm/java-8-openjdk-amd64/jre
 Default locale: en_US, platform encoding: UTF-8
 OS name: "linux", version: "4.4.0-131-generic", arch: "amd64", family: "unix"

1

Thêm phần này vào maven-Surefire-plugin Tôi đã giải quyết được vấn đề:

    <plugin>    
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-surefire-plugin</artifactId>  
        <configuration>
            <forkCount>0</forkCount>
        </configuration>
    </plugin>

1

Về cơ bản là sự không tương thích giữa phiên bản JDK và phiên bản plugin maven-Surefire, trong trường hợp của tôi, JDK 11.0.5 không hoạt động với Surefire 3.0.0-M4, tôi đã phải chuyển sang 3.0.0-M3 và nó đã hoạt động. đặt forkCount thành 0 không khắc phục được sự cố vì nó phá vỡ báo cáo Jacoco.


0

Tôi đã gỡ cài đặt JDK đi kèm trong kho:

$ sudo apt purge openjdk-8-jdk

$ sudo apt autoremove

Sau đó, tôi xóa JAVA_HOMEbiến môi trường. Của tôi đã được đặt trong .bashrc của tôi.

Sau đó, tôi đã cài đặt lại thông qua SDKMAN:

$ sdk install java 8.0.181-zulu

Từ trang web của họ :

SDKman! là một công cụ để quản lý các phiên bản song song của nhiều Bộ phát triển phần mềm trên hầu hết các hệ thống dựa trên Unix. Nó cung cấp Giao diện dòng lệnh (CLI) và API thuận tiện để cài đặt, chuyển đổi, xóa và liệt kê các ứng viên.

Để xem các phiên bản khác của JDK để cài đặt, hãy sử dụng:

$ sdk list java

0

Tôi đã phải đối mặt với cùng một vấn đề với gitlab ci, thay đổi hình ảnh maven từ maven:3-jdk-8để maven:3.6.0-jdk-8-alpinedường như khắc phục vấn đề. Btw tôi cũng đã thử nghiệm maven:3.6.0-jdk-8nhưng nó cũng không hoạt động.


0

Nó vẫn là một vấn đề surefire - v2.22.2với maven:3.6-jdk-8-alpine. Để khắc phục sự cố, hãy thêm mã dưới đây vào pom.xml(dưới dạng plugin maven)

...
<plugin>    
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId>  
    <configuration>
        <forkCount>0</forkCount>
    </configuration>
</plugin>
...

-1

Nếu giống như tôi, bạn có vấn đề trong đường ống của mình (đối với tôi, đó là trong GitLab, nhưng bất cứ điều gì) và nếu bạn đang sử dụng hình ảnh Docker Maven JDK 8.

Bạn có thể thay thế

image: maven:3.5.4-jdk-8

bởi bản dựng cuối cùng

image: maven@sha256:b37da91062d450f3c11c619187f0207bbb497fc89d265a46bbc6dc5f17c02a2b

1
Vấn đề xuất phát từ jdk8 mới nhất dành cho debian, theo tôi, tốt hơn hết là "khắc phục" vấn đề cốt lõi hơn là cố gắng giải quyết nó.
Sylordis

Các sha256 âm thanh khó khăn và sợ bạn? Trên thực tế, câu trả lời khác trông giống như một công việc xung quanh, vô hiệu hóa một số tính năng từ chắc chắn, ở đây chỉ là về việc sử dụng hình ảnh docker làm việc cuối cùng mà không thay đổi pom hoặc đường ống làm việc của bạn.
amdev
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.