Build Gradle - package com.core.service does not exist or cannot find symbol

0

Kiedy chcę budować aplikację za pomocą build w gradle to otrzymuję błędy typu

C:\Users\Jonatan\Documents\GitHub\REST-Web-Services\web\src\main\java\com\web\web\controller\CheckUserDataRestController.java:3: error: package com.core.service does not exist
import com.core.service.UserSearchService;

lub

C:\Users\Jonatan\Documents\GitHub\REST-Web-Services\web\src\main\java\com\web\web\controller\ForgotRestController.java:33: error: cannot find symbol
    private final UserPersistenceService userPersistenceService;
                  ^
  symbol:   class UserPersistenceService
  location: class ForgotRestController

tutaj cała lista błędów https://pastebin.com/0NXtUHyw

Błędy wskazują na linie, gdzie jest normalny poprawny import lub deklaracja obiektu. Projekt podzielony jest na moduły. Moduł core zawiera serwisy. Moduł core jest kompilowany w module web

dependencies {
	compile project(':core')
...
}

i własnie tylko w tym module web wskazuje błędy klas serwisów pochodzących z modułu core. O co tu może chodzić? Projekt kompiluje się poprawnie. Tylko budowa przez gradle sprawia problem.

0

Załączony fragment nie zawiera początku wyjścia z Gradle'a - dobrze by było, gdybyś go załączył, ponieważ będzie widać wtedy, jakie dokładnie taski są odpalane.

Druga rzecz - odpal build z flagą --debug. Logi się zwiększą (nie wklejaj debuga tutaj), ale wśród nich będzie dokładna postać wywołania kompilatora, w tym flaga classpath i będzie można zobaczyć czy wszystko się prawidłowo dodało.

0

Ciekawe. Chętnie bym zobaczył taki projekt, w którym błąd wyskakuje. Teoretycznie powinno działać. Tak jak zyxist pisze, trzeba obejrzeć ten classpath. Da się to dość łatwo wypisać (configurations.compile.each { println it }).

0

Nie znam się za bardzo na Gradle, ale zrobiłem coś takiego.

  1. Odpaliłem konsole cmd i w folderze projektu wykonałem polecenie gradle build --debug > log.txt 2> logErrors.txt
    log http://wklej.org/id/3419779/
    logErrors https://pastebin.com/3FbmKbK9
  2. Wykonałem polecenie gradle build > log.txt 2> logErrors.txt
    log https://pastebin.com/nAHcvSGV
    logErrors https://pastebin.com/bbbXD8nZ
  3. Wykonałem polecenie gradle build --stacktrace > log.txt 2> logErrors.txt
    log taki sam jak wyżej
    logErrors https://pastebin.com/KtKfkaYf
  4. Wykonałem polecenie gradle build --debug> log.txt
    https://pastebin.com/vdNkZHpT
0

OK, w logach jest to, co być powinno:

-classpath C:\Users\Jonatan\Documents\GitHub\REST-Web-Services\core\build\libs\core.jar;C:\Users\Jonatan\Documents\GitHub\REST-Web-Services\common\build\classes\java\main;

Aczkolwiek nie do końca. Czy dołączasz jako zależność także projekt common? Jeśli tak, to zauważ, że core jest dodawany jako archiwum JAR, a common jako ścieżka do katalogu z klasami.

  1. Czy C:\Users\Jonatan\Documents\GitHub\REST-Web-Services\core\build\libs\core.jar istnieje?
  2. Czy w tym pliku są w ogóle Twoje skompilowane klasy z projektu core? (JAR to zwykłe archiwum zip, wystarczy zmienić rozszerzenie i można go normalnie rozpakować i zobaczyć, co jest w środku).
0

@zyxist: Wiesz co dalej powinienem zrobić?

0

Spróbuj zmienić kolejność aplikowanych modułów:

    apply plugin: 'java'
    apply plugin: 'org.springframework.boot'
    apply plugin: 'io.spring.dependency-management'
    apply plugin: 'application'
    apply plugin: 'checkstyle'

tak, żeby springowe pluginy były na końcu. Niedawno sam miałem jakieś drobne problemy związane z tym, że plugin Spring Boota przekonfiguruje to i owo. Pluginu java nie potrzebujesz, ponieważ jest on zawarty w application.

0

Zmieniłem na

    apply plugin: 'application'
    apply plugin: 'checkstyle'
    apply plugin: 'org.springframework.boot'
    apply plugin: 'io.spring.dependency-management'

niestety nie pomogło.

1 użytkowników online, w tym zalogowanych: 0, gości: 1