Запуск проекта Scala Maven - PullRequest
       4

Запуск проекта Scala Maven

0 голосов
/ 16 февраля 2019

Я новичок в Scala, запускал стартовый проект на Maven и использовал IntelliJ в качестве IDE.

Это ссылка на проект на github, который я использую Github project иЯ скомпилировал проект с использованием OpenJDK8.

Класс HelloJava работает успешно, однако при попытке запустить класс HelloScala я сталкиваюсь со следующей ошибкой:

java -cp scala-maven-example-1.0.0-SNAPSHOT.jar com.jesperdj.example.HelloScala

Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.NoClassDefFoundError: scala/Function0
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
at java.lang.Class.privateGetMethodRecursive(Class.java:3048)
at java.lang.Class.getMethod0(Class.java:3018)
at java.lang.Class.getMethod(Class.java:1784)
at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526)

Caused by: java.lang.ClassNotFoundException: scala.Function0
   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)
... 7 more

Ответы [ 2 ]

0 голосов
/ 16 февраля 2019

Для запуска ваших программ на Intellij вам необходимо установить scala sdk вместе с JDK.

После того, как у вас есть scala SDK в вашем classpath Intellij, вы можете использовать scala кодирование.

0 голосов
/ 16 февраля 2019

Scala имеет собственные библиотеки времени выполнения выше JVM.Скомпилированный Scala .class имеет import ed некоторых классов из библиотек времени выполнения Scala.Когда вы пытаетесь запустить файл Scala .class, вам нужно добавить среду выполнения Scala к classpath.

Если вы работаете внутри IntelliJ IDEA, плагин Scala сделает это автоматически, но когда вызапустите java из командной строки, вы должны сделать это самостоятельно.

Если вы используете Maven, вы можете добавить <plugin>.Из Scala Docs -> Scala с Maven -> Создание Jar :

<build>
    ...
    <plugins>
        ...
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
                <archive>
                    <manifest>
                        <mainClass>com.your-package.MainClass</mainClass>
                    </manifest>
                </archive>
            </configuration>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

После добавления этого пакет mvn также создаст [artifactId] - [version] -jar-with-dependencies.jar под целью. Примечание: это также скопирует библиотеку Scala в ваш Jar .Это нормально.Будьте осторожны, чтобы ваши зависимости использовали одну и ту же версию Scala, иначе вы быстро получите массивный Jar.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...