Maven surefire ForkedBooter sınıfını bulamadı


218

Son zamanlarda yeni bir projeye geliyorum, kaynak kodumuzu derlemeye çalışıyorum. Dün her şey yolunda gitti, ama bugün başka bir hikaye.

mvn clean installBir modülde her çalıştığımda , testlere ulaştıktan sonra bir hataya çarpıyor:

[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

ve daha sonra:

[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?

Ben koşuyorum Debian 9 64-bit OpenJDK 1.8.0_181 ile (Stretch) Maven yaşıyorum benim, yapılandırılmış benim şirket vekil ardında çalışan 3.5.4 ~/.m2/settings.xml.

Garip bir şey, doğru hatırlıyorsam en son Surefire sürüm 2.22.1 olması. Eklenti sürümünü belirlemeye çalıştım, ancak güncellenmiyor, aksi takdirde herhangi bir POM'de (ebeveyn, büyük ebeveyn veya bu) herhangi bir eklenti sürümü belirtimi yoktur .

Maven'i Surefire sürümünü en son sürümle değiştirmeye zorladım, ancak şimdi daha da kötü:

[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
Bu hatayı clircle-ci'de yaşıyorum. Surefire çatalları ve çatallı vm aşağıdaki iletiyi yazdırır ve çıkar: "Hata: org.apache.maven.surefire.booter.ForkedBooter ana sınıfı bulunamadı veya yüklenemedi". Masaj hedef / emin ateş raporları / *. Maven komutunu -X ile çalıştırırsanız komut satırını yazdırır, bunu deneyebilir ve vm'nin bu mesajı yazdırdığını görebilirsiniz.
Bruno Coutinho


benim çözüm herhangi bir sürümünün open-jdks kullanmayı durdurmak oldu. bu kadar temel bir şeyde bu tür güvenilmezliği karşılayamaz.
Adrian M.

dependencyManagementEklentilerin farklı sürümlerini belirtmek için maven bölümünü kullanın
Jogaco

Debian'da jdk 11'e güncelleme yapmak benim için kesin bir çözümdü!
clearlight

Yanıtlar:


251

Düzeltmek için (2018'de) openjdk'nizi en az 8u191-b12 olan en son sürüme güncelleyin. Bu sorunun 2020'de yeniden ortaya çıkması durumunda, büyük olasılıkla openjdk'nin varsayılan davranışının değişmiş olması ve maven güzelliğinde eklentisini güncellemeniz gerekecektir.

Bu, yeni sürüme geçirdiğiniz openjdk-8 paketinde (davranışa gerek kalmadan yukarı akıştan önemli ölçüde sapma; güvenlik kontrolünü devre dışı bırakmaya geri dönmek için yukarı akış yamasını eksik) şimdi düzeltilen bir hataydı . Ama aynı zamanda güzelliğinde eklentisi olan SUREFIRE-1588'de 3.0.0-M1 güzelliğinde sabit bir hata var : görünüşe göre Java'nın gelecekte sadece göreli yol adlarına izin vereceği bir yerde mutlak yollar kullanıyor (ve Debian gelecekteki davranışlar).

Paket sürümü 8u181-b13-2 şunları belirtir:

  • 8u191-b12 güvenlik güncelleştirmesinden düzeltme ekleri uygulayın.

191-b12! = 181-b13 olduğuna dikkat edin. 191-b12 güvenlik yamaları birkaç gün önce çıktı ve görünüşe göre koruyucular onları hızlı bir şekilde almak istiyorlardı. Tamamen 191-b12 sürümüne güncelleme yapmak için ek testler gerekecektir (görünüşe göre bu yüklemeye sahip olmalıdır).

Birkaç geçici çözüm vardı:

  1. Bunun yerine önceki paketi snapshots.do adresinden yükleyebilirsiniz . Eski sürüme geçtikten sonra, bozuk sürümü (yetenek kullanıyorsanız ve aptkullanmıyorsanız) kullanarak yasaklayabilirsiniz sudo aptitude forbid-version openjdk-8-jre-headless. Düzenli "apt" için benzer bir yasak mekanizması görmedim, bu yüzden muhtemelen bu yükseltmenin yeniden yüklenmesini önlemek için apt pinning'i kullanmanız gerekir (ya da tekrar indirmeye devam edersiniz, umarım bu yakında çözülecektir).
  2. Hata izlemeye göre, özelliğin -Djdk.net.URLClassPath.disableClassPathURLCheck=trueolağan yöntemlerden herhangi biri (ör. JAVA_FLAGS) İle ayarlanması da yardımcı olacaktır. Ama bunu kendim doğrulamam. Görünüşe göre tüm Maven sürümleriniz için kolayca etkinleştirilmesi için geçici çözümü~/.m2/settings.xml bile ekleyebilirsiniz .

Gördüğünüz gibi, hata izleme çalışıyor , sorun daraltıldı ve sabit bir paket mevcut ve surefire eklentisinin yeni bir sürümü yakında gelecek!


@AdrianMadaras Şimdiye kadar yeni bir güncelleme almadım, sadece -2 sürümü. Ayrıca, sabit bir yükleme hakkında henüz bir açıklama yapılmadı, ancak devam ediyor. Muhtemelen bilinen sorunlu sürüme tekrar yükseltme yaptınız.
Erich Schubert

1
Aynı sorunu Ubuntu 18.04'te OpenJDK 10.0.2 kullanarak aldım. JAVA_HOME'u 'java-9-oracle' kurulumuma değiştirmek sorunu çözdü.
RobAu

2
Eminfire -maven-eklenti sorun izleyicisindeki ilgili sorun şunlardır : issue.apache.org/jira/browse/SUREFIRE-1588 (hala ilgili OpenJDK değişikliklerinin Kanonik / Debian backport'unda bir hata).
mirabilos

1
Buralarda çalışıyorum 1. Bu sorunu yaşadığım sürüm olduğu için bana bir anlam ifade etmiyor. SystemClassLoader'ı kullanmamak için maven-surefire-eklentisini geçersiz kılma
Edwin Diaz-Mendez

1
Surefire 3.0.0-M1 sürümüne yükseltmeyi de deneyebilirsiniz. Ama 2 ila 3 kilometre taşı sürümü elbette diğer şeyleri kırabilir.
Erich Schubert

54

UseSystemClassloader öğesini false olarak ayarlayın:

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

Sizin için tanımlanmış sürümü (Spring Boot starter gibi) bir ebeveynden miras almıyorsanız, bunu da tanımlamanız gerekir.


Testleri eklenti işleminde çalıştırdığınız için sistem sınıf yükleyiciyi etkinleştirmek en kötü uygulamadır. Doğru uygulama her eklentinin sürümünü yükseltmektir. Maven 3.7.0, varsayılan yaşam döngüsüne ait tüm eklentilerin sürümlerini yükseltir. Bahar eski versiyonlara bağlı kalmamalı ve onları da geçersiz kılmamalıdır. Bu, sorumluluklarda gereksiz çatışmalara neden olur.
tibor17

52

Bu geçici çözümü buldum ve testlerimi düzelttim: maven-surefire-pluginsistem sınıf yükleyicisini kullanmamayı yapılandırın .


Maven-surefire-plugin sürdürücüsüne göre, tüm geçici çözümlerin (bu, forkCount0 olarak ayarlanan veya argLineglobal olarak ayarlanan ) sorunları vardır ve evrensel olarak uygulanamazlar.
mirabilos

İyi bulmak. Ancak lütfen gerçek geçici çözüm metnini gönderinize ekleyin veya en azından bağlantıyı bir yığın akışı bağlantısı olarak açıkça tanımlayın. Yani @markoorn tarafından kullanılan yaklaşım daha faydalıdır.
nealmcb

38

Başka bir çözüm var. _JAVA_OPTIONS ortam değişkenini ayarlayın. Bunu TeamCity yapı temsilcilerimiz için kullandım ve şimdi yapılarımız iyi çalışıyor.

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

Bir güvenlik düzeltmesi olarak etiketlenmiş bir kırılma değişikliği genellikle hiçbir sebeple tanıtılmaz ve böylece biri SO'ya nasıl devre dışı
bırakılacağını

26

JIRA'da yukarıdaki geçici çözümlerden birinin daha hedefli bir varyantını yayınladım . Şuraya ekle ~/.m2/settings.xml:

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

Bu, aşağıdaki uyarı ile başarısız olur:[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 Yukarıdaki kod parçasının içine alınması gerekir <settings><profiles>...</profiles></settings>.
qqx

13

maven:3.5.4-jdk-8Docker görüntüsünü kullanan GitLab CI derlememde bu sorunu yaşadım .

maven:3.5.4-jdk-8-alpineSorunu düzeltmek için değiştirmek .



8

GitLab CI / CD'yi 3.6.0-jdk-8görüntü ile kullanırken sadece aşağıdaki özellik yardımcı oldu (değiştirmeden pom.xml).

-Dsurefire.useSystemClassLoader=false

Bu yine kötü bir uygulamadır. Doğru olan, sürümü yükseltmektir. Her zaman Maven Central'daki sürümleri kontrol edin .
tibor17

5

GitLab CI'da Docker Maven: 3.5.x-jdk-8 ile ilgili bir cevap arayanlar için bu GitHub sorununa bakın .

3.5.4-jdk-8Surefire'ın çatal mekanizmasını bir şekilde etkileyen küçük bir Java sürümüne yükseltme ile sonuçlanan bir görüntü gibi görünüyor .

3.5.3-jdk-8Görüntüye geri dönmek , benim için Surefire 2.20.1 ile Java 1.8 kodu oluşturan GitLab CI sunucumda düzeltildi.


5

"-Djdk.net.URLClassPath.disableClassPathURLCheck = true" özelliğini ayarlamak için yukarıdaki öneri benim için çalışmadı, ancak aşağıdakilerin ayarlanması işe yaramıyor:

-DforkCount=0

2
Bunun, testleri çalıştırmak için yeni bir VM oluşturmama etkisi vardır, bu nedenle testler muhtemelen ana oluşturma VM'sini etkileyebilir.
Paŭlo Ebermann

4

Ubuntu için: En son sürümü yükleyin, bu hatayı düzeltti

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

Son çalışan sürümü (güvenlik yamaları olmadan) hata olmadan yükleyin.

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

Bu sürümü kaçırdıysanız, önceki sürümü kullanın:

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

Ardından, sabitleme sürümünü kullanın veya bozuk sürümü yüklemeyeceğinize dikkat edin.

-Djdk.net.URLClassPath.disableClassPathURLCheck=trueBu yapılandırmayı koyduğum her yerde kullanmak benim için işe yaramadı. Entegrasyon testlerimdeki bir yerde eski Java sürümü olmadan her zaman çıkıldı.

Erich tarafından belirtildiği gibi , Debian paketinde 911925 ve Surefire eklentisi SUREFIRE-1588'in yeni kurallarına göre davranmayan bir hata .


Neden birisi güvenlik düzeltme ekleri olmayan bir sürüm yüklemeyi önerir ?! Diğer öneriler arasında atlama testleri de olsa, ha.
berezovskyi

1
Artık gerek yok :-) Düzeltildi. Ama bu arada üzerinde çalışmam gereken birçok java projem vardı ve java çalışma zamanım hiçbir yerde dışarıdan herhangi bir yeni koda maruz kalmadı. Bu yüzden benim için Tamam olan denetlenebilir bir risk vardı. Sonuçta herkesin kendi kararı :-)
flob

Aslında haklısın, JDK geliştiricilerinin varsayılan olarak ayarlanan pervane üzerinde yürüdüğünü buldum: hg.openjdk.java.net/jdk/jdk/rev/f54dcfc5a5f8 ; ama surefire büyük sürüm yükseltme aslında benim için en iyi düzeltme gibi görünmüyor.
berezovskyi

1
Kesinlikle! Ancak yapmaları gereken değişiklikler tüm kod tabanı boyunca ve çok invaziv. Bu nedenle, bu düzeltme için küçük bir sürüm değişikliği surefire'da bir seçenek olmaz.
2018

1
Ve ne yazık ki, 2.x kullanımdan kaldırıldı ve geç bir an önce geçiş yapmamız gerekecek: issue.apache.org/jira/browse/…
berezovskyi

2

Junit-jüpiter-motoruna bağımlılık ekledim ve işe yaradı.

<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>

Bu jüpiter eklentisi ne kara büyü yapar? Bu benim için çalıştı! Oyla! :-)
Hinotori

1

Geçenlerde Jenkins üzerinde maven işi kurdum ve aynı probleme takıldım. JAVA env değişkenini değiştirmek ve sorunun çözüldüğünü onaylamak için öneri aldım. Ben böyle test ettim.

"Jenkins" kullanıcı olur ve klasörü iş için ayarladığınız çalışma alanı proje adına değiştirin.

 $ _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

Bunu maven-surefire-eklentisine ekleyerek sorunu çözdüm:

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

1

Temelde JDK sürümü ve maven-surefire eklentisi sürümü arasında bir uyumsuzluk, benim durumumda, JDK 11.0.5 surefire 3.0.0-M4 ile çalışmaz, 3.0.0-M3'e geçmek zorunda kaldım ve çalıştı. forkCount değerini 0 olarak ayarlamak Jacoco raporunu bozduğundan sorunu çözmez.


0

Depolarda gelen JDK'yı kaldırdım:

$ sudo apt purge openjdk-8-jdk

$ sudo apt autoremove

Sonra JAVA_HOMEortam değişkenini sildim . Benimki .bashrc'de kuruldu.

Sonra SDKMAN ile yeniden yükledim:

$ sdk install java 8.0.181-zulu

Onların Gönderen sitesinde :

SDKMAN! birçok Unix tabanlı sistemde çoklu Yazılım Geliştirme Kitlerinin paralel sürümlerini yönetmek için bir araçtır. Adayları yüklemek, değiştirmek, kaldırmak ve listelemek için kullanışlı bir Komut Satırı Arayüzü (CLI) ve API sağlar.

Yüklenecek diğer JDK sürümlerini görmek için şunu kullanın:

$ sdk list java

0

Ben gelen maven imajını değiştirmek, gitlab ci ile aynı sorunla karşı karşıya olduğu maven:3-jdk-8için maven:3.6.0-jdk-8-alpinesorunu çözmek gibi görünüyor. Btw ben de test maven:3.6.0-jdk-8ama hiçbiri işe yaramadı.


0

Hala surefire - v2.22.2bununla ilgili bir sorun maven:3.6-jdk-8-alpine. Sorunu çözmek için aşağıdaki kodu pom.xml(maven eklentisi olarak) ekleyin

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

-1

Benim gibi, boru hattınızda sorunlar var (benim için GitLab'da, ancak her neyse) ve bir Maven JDK 8 Docker görüntüsü kullanıyorsanız.

Değiştirebilirsiniz

image: maven:3.5.4-jdk-8

son çalışan yapıya göre

image: maven@sha256:b37da91062d450f3c11c619187f0207bbb497fc89d265a46bbc6dc5f17c02a2b

1
Sorun debian için en son jdk8 geliyor, Bence çekirdek sorunu "üzerinde çalışmak" denemek daha iyidir.
Sylordis

Sha256 sesi zor ve korkuyor mu? Aslında diğer cevap daha çok etrafta bir işe benziyor, bazı özellikleri kesin ateşten devre dışı bırakıyor, işte sadece bir çalışma olan çalışma pom veya boru hattınızı değiştirmeden son çalışan liman işçisi görüntüsünü kullanmakla ilgili.
amdev
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.