java.lang.NoClassDefFoundError: scala / Function1 - PullRequest
       21

java.lang.NoClassDefFoundError: scala / Function1

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

Я пытался запустить приложение Scala в jar.

Следующий код:

object Starter {
    def main(args: Array[String]): Unit = {
        args.foreach(path => {
            val (minX, maxX, minY, maxY) = MainStage.run(path)
            println(minX)
            println(maxX)
            println(minY)
            println(maxY)
        })
    }
}

вызывает ошибку на том же компьютере (хотя это работает внутри Intellij Idea):

$ java -cp foo-1.0-SNAPSHOT.jar ogr.bar.system.Starter
Exception in thread "main" java.lang.NoClassDefFoundError: scala/Function1
    at ogr.bar.system.Starter.main(Starter.scala)
Caused by: java.lang.ClassNotFoundException: scala.Function1
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:338)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 1 more

Затем я попытался сделать простойприложение hello world:

object Starter {
    def main(args: Array[String]): Unit = {
        println("hello world")
        //args.foreach(path => {
        //      val (minX, maxX, minY, maxY) = MainStage.run(path)
        //      println(minX)
        //      println(maxX)
        //      println(minY)
        //      println(maxY)
        //})
    }
}

И возникает исключение:

$ java -cp foo-1.0-SNAPSHOT.jar ogr.bar.system.Starter
Exception in thread "main" java.lang.NoClassDefFoundError: scala/Predef$
        at ogr.bar.system.Starter$.main(Starter.scala:7)
        at ogr.bar.system.Starter.main(Starter.scala)
Caused by: java.lang.ClassNotFoundException: scala.Predef$
        at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:338)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        ... 2 more  

Ниже приведен фрагмент моего pom.xml

<properties>
    <javaVersion>1.8</javaVersion>
</properties>

<dependencies>
    <dependency>
        <groupId>org.scala-lang</groupId>
        <artifactId>scala-library</artifactId>
        <version>2.11.8</version>
    </dependency>
    <dependency>
        <groupId>org.scala-lang.modules</groupId>
        <artifactId>scala-xml_2.11</artifactId>
        <version>1.0.4</version>
    </dependency>
    <dependency>
        <groupId>org.scalatest</groupId>
        <artifactId>scalatest_2.11</artifactId>
        <version>3.0.1</version>
        <scope>test</scope>
    </dependency>

</dependencies>
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.3</version>
            <configuration>
                <source>${javaVersion}</source>
                <target>${javaVersion}</target>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.scala-tools</groupId>
            <artifactId>maven-scala-plugin</artifactId>
            <version>2.15.2</version>
            <executions>
                <execution>
                    <goals>
                        <goal>compile</goal>
                        <goal>testCompile</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <sourceDir>src/main/scala</sourceDir>
                <testSourceDir>src/test/scala</testSourceDir>
            </configuration>
        </plugin>

    </plugins>
</build>             

Что мне делатьзаставить мое приложение работать?

1 Ответ

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

Проблема в том, что вы, вероятно, создаете тонкую версию своего приложения.

Он не содержит всех зависимостей, таких как scala-liabrary.Таким образом, ошибка

java.lang.NoClassDefFoundError: scala/Predef$

Установите этот флажок на , как создавать толстые фляги в maven .

...