Kotlin использование модулей JDK - PullRequest
0 голосов
/ 20 декабря 2018

В настоящее время я пишу код Kotlin, который использует библиотеку Java (разработанную мной), которая использует javax.smartcardio lib, но при компиляции Kotlin отображается следующая ошибка:

Cannot access class 'javax.smartcardio.CommandAPDU'. Check your module classpath for missing or conflicting dependencies

Что я могу сделать, чтобы решить эту проблему?

Спасибо.

РЕДАКТИРОВАТЬ: Я использую Maven и мои зависимости и плагины следующие:

<properties>
    <kotlin.version>1.3.11</kotlin.version>
</properties>


<dependencies>
    <dependency>
        <groupId>io.javalin</groupId>
        <artifactId>javalin</artifactId>
        <version>2.4.0</version>
    </dependency>

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-simple</artifactId>
        <version>1.7.25</version>
    </dependency>

    <!-- Kotlin -->
    <dependency>
        <groupId>org.jetbrains.kotlin</groupId>
        <artifactId>kotlin-stdlib-jdk8</artifactId>
        <version>${kotlin.version}</version>
    </dependency>
    <dependency>
        <groupId>org.jetbrains.kotlin</groupId>
        <artifactId>kotlin-test</artifactId>
        <version>${kotlin.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.jetbrains.kotlin</groupId>
        <artifactId>kotlin-reflect</artifactId>
        <version>${kotlin.version}</version>
    </dependency>

    <dependency>
        <groupId>my.project</groupId>
        <artifactId>apdu-processor</artifactId>
        <version>0.1-SNAPSHOT</version>
    </dependency>

</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.jetbrains.kotlin</groupId>
            <artifactId>kotlin-maven-plugin</artifactId>
            <version>${kotlin.version}</version>
            <executions>
                <execution>
                    <id>compile</id>
                    <phase>compile</phase>
                    <goals>
                        <goal>compile</goal>
                    </goals>
                </execution>
                <execution>
                    <id>test-compile</id>
                    <phase>test-compile</phase>
                    <goals>
                        <goal>test-compile</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <jvmTarget>1.8</jvmTarget>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <executions>
                <execution>
                    <id>compile</id>
                    <phase>compile</phase>
                    <goals>
                        <goal>compile</goal>
                    </goals>
                </execution>
                <execution>
                    <id>testCompile</id>
                    <phase>test-compile</phase>
                    <goals>
                        <goal>testCompile</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

Библиотека, которая использует javax.smartcardio - apdu-processor.

1 Ответ

0 голосов
/ 20 декабря 2018

Поскольку javax.smartcardio не является прямой зависимостью вашего проекта, его необходимо объявить транзитивно из apdu-processor.Там вы должны убедиться, что эта зависимость объявлена ​​как COMPILE зависимость, а не PROVIDED или RUNTIME .

Вы всегда можете исправитьэто путем явного объявления зависимости в вашем проекте.

...