Установите точку входа Java для класса, который находится в JAR внутри другого JAR - PullRequest
0 голосов
/ 14 мая 2019

У меня есть JAR, который упакован с One Jar, поэтому он содержит несколько зависимостей внутри себя (используя нотацию JAR URL):

<one.jar>!/lib/<deps1.jar>
<one.jar>!/lib/<deps2.jar>
...

Возможно ли запустить main() из класса com.example.A который живет в deps2.jar?

Я пытался java -cp one.jar!/lib/deps2.jar com.example.A, но это не работает.

1 Ответ

1 голос
/ 15 мая 2019

Вы можете включить main () где-нибудь в вашем основном .jar, который делегирует com.example.A.main (). Это даст вам поведение, которое вы ищете с помощью нескольких дополнительных строк кода ... небольшого дополнительного файла определения класса. Например:

package foo.bar;

import com.example.A;

class MainEntryDelegate {
    public static void main(String... args) {
        com.example.A.main(args);
    }
}

Таким образом, ваше приложение будет работать через очевидное:

java -cp one.jar foo.bar.MainEntryDelegate

или если вы правильно настроили манифест:

java -jar one.jar
...