Балерина java .lang.ClassNotFoundException при запуске модуля / проекта - PullRequest
1 голос
/ 06 марта 2020

Я пытаюсь взаимодействовать с Ballerina и Java, импортируя jar, состоящий из кода классов Java, в балерину и пытаясь вызвать конструктор и методы класса java через файл .bal.

This работает отлично, когда я запускаю .bal файл.

ballerina run <balfile>

Однако, когда я запускаю весь модуль проекта, это дает мне исключение ниже.

enter code here
error: java.lang.NoClassDefFoundError message=com/example/wrapperpackage/Wrapper cause=error java.lang.ClassNotFoundException message=com.example.wrapperpackage.Wrapper
        at cceackh.implementation:wrapperconstructor(java-test.bal:14)
           cceackh.implementation:main(java-test.bal:42)
PS C:\Users\cceackh\java_ballerina_interop\ballerina_interop>

Я сохранил банку файл в папке BallerinaHome / Distribution / Bre / Lib.

Спасибо.

1 Ответ

1 голос
/ 06 марта 2020

Я предполагаю, что вы уже прочитали руководство Как структурировать код балерины . Когда вы компилируете программу Ballerina с ballerina build <root-module>, компилятор создает исполняемый файл JAR. В этом случае компилятор Ballerina создает автономный файл JAR.

Если вы используете совместимость Java в Ballerina, вам нужно указать все ваши файлы JAR в файле Ballerina.toml, чтобы компилятор мог упаковать их в исполняемый файл JAR.

Вот как вы можете указать зависимость файла jar в Ballerina.toml.

[platform] 
target = "java8" 

[[platform.libraries]] 
# Absolute or relative path to the jar file
path = "<path-to-jar-file-1>" 
# A comma-separated list of Ballerina module names that depends on this jar
modules = ["<ballerina-module-1>"]

[[platform.libraries]] 
path = "<path-to-jar-file-2>" 
modules = ["<ballerina-module-1>","<ballerina-module-2>"]
[platform] 
target = "java8" 

[[platform.libraries]] 
    path = "./javalibs/mysql-connector-java-<version>.jar" 
    modules = ["ordermgt"]
...