Я создал базовый проект 'сервер' (сервер), который включает в себя базовую зависимость проекта, такую как:
build.gradle (:backend)
dependencies { implementation project(':base') }
settings.gradle (:backend)
rootProject.name = 'backend'
include ':base'
project(':base').projectDir = new File(settingsDir, '../base')
Я могу открыть проект «бэкэнд» и запустить его без проблем.
Как вы, наверное, поняли из «../base» в файле настроек, «базовый» проект на один уровень выше. На этом уровне у меня есть другой проект, подобный этому:
settings.gradle (:OneLevelAbove)
rootProject.name='OneLevelAbove'
include ':app', ':base', ':SharedCode', ':backend'
Я не получаю ошибок от IDE где-нибудь, и мои другие проекты работают просто отлично, используя код из ': base'.
Однако моя проблема в том, что когда я вместо этого пытаюсь запустить проект ': backend' отсюда, я получаю cra * sh:
Exception in thread "main" java.lang.NoClassDefFoundError: path/to/base/project/Class
at server.ServerKt.main(Server.kt:23)
Caused by: java.lang.ClassNotFoundException: path.to.base.project.Class
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
Если я удаляю весь код, относящийся к ': base', сервер работает нормально, поэтому я предполагаю, что есть проблема с включением, или, возможно, с classpath.
Я новичок в Gradle, поэтому мне интересно как правильно настроить его, чтобы иметь возможность запустить сервер из проекта «OneLevelAbove», также используя код из «: base».
Заранее спасибо.