使用maven依赖项和一些java代码运行scala应用程序
我已经创建了一个Scala应用程序。此应用程序具有一些maven依赖项。但是这个应用程序也有一些java代码。Scala代码正在使用中使用maven依赖项和一些java代码运行scala应用程序,java,scala,maven,Java,Scala,Maven,我已经创建了一个Scala应用程序。此应用程序具有一些maven依赖项。但是这个应用程序也有一些java代码。Scala代码正在使用中 src/main/scala/... src/main/java/... java代码正在开发中 src/main/scala/... src/main/java/... 我通过scala使用它。主类是scala对象(不是java)。我通过IntelliJ成功编译了应用程序。当我尝试使用以下命令运行应用程序时: scala -J-Xmx4g MyApp.
src/main/scala/...
src/main/java/...
java代码正在开发中
src/main/scala/...
src/main/java/...
我通过scala使用它。主类是scala对象(不是java)。我通过IntelliJ成功编译了应用程序。当我尝试使用以下命令运行应用程序时:
scala -J-Xmx4g MyApp.jar
我得到以下例外情况:
java.lang.NullPointerException
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at scala.reflect.internal.util.ScalaClassLoader$$anonfun$tryClass$1.apply(ScalaClassLoader.scala:43)
at scala.reflect.internal.util.ScalaClassLoader$$anonfun$tryClass$1.apply(ScalaClassLoader.scala:43)
at scala.util.control.Exception$Catch$$anonfun$opt$1.apply(Exception.scala:119)
at scala.util.control.Exception$Catch$$anonfun$opt$1.apply(Exception.scala:119)
at scala.util.control.Exception$Catch.apply(Exception.scala:103)
at scala.util.control.Exception$Catch.opt(Exception.scala:119)
at scala.reflect.internal.util.ScalaClassLoader$class.tryClass(ScalaClassLoader.scala:42)
at scala.reflect.internal.util.ScalaClassLoader$class.tryToInitializeClass(ScalaClassLoader.scala:39)
at scala.reflect.internal.util.ScalaClassLoader$URLClassLoader.tryToInitializeClass(ScalaClassLoader.scala:101)
at scala.reflect.internal.util.ScalaClassLoader$class.run(ScalaClassLoader.scala:63)
at scala.reflect.internal.util.ScalaClassLoader$URLClassLoader.run(ScalaClassLoader.scala:101)
at scala.tools.nsc.CommonRunner$class.run(ObjectRunner.scala:22)
at scala.tools.nsc.JarRunner$.run(MainGenericRunner.scala:13)
at scala.tools.nsc.CommonRunner$class.runAndCatch(ObjectRunner.scala:29)
at scala.tools.nsc.JarRunner$.runJar(MainGenericRunner.scala:25)
at scala.tools.nsc.MainGenericRunner.runTarget$1(MainGenericRunner.scala:69)
at scala.tools.nsc.MainGenericRunner.run$1(MainGenericRunner.scala:87)
at scala.tools.nsc.MainGenericRunner.process(MainGenericRunner.scala:98)
at scala.tools.nsc.MainGenericRunner$.main(MainGenericRunner.scala:103)
at scala.tools.nsc.MainGenericRunner.main(MainGenericRunner.scala)
请注意,我可以从IDE运行应用程序。还请注意,我添加了一些maven插件,正如其他网站建议的那样,但也有类似的例外。插件包括:
<plugins>
<plugin>
<groupId>net.alchim31.maven</groupId>
<artifactId>scala-maven-plugin</artifactId>
<executions>
<execution>
<id>scala-compile-first</id>
<phase>process-resources</phase>
<goals>
<goal>add-source</goal>
<goal>compile</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
net.alchim31.maven
scala maven插件
scala先编译
过程资源
添加源
编译
org.apache.maven.plugins
maven编译器插件
1.8
1.8
例外的原因是什么?我的问题答案很简单。文件夹scala必须标记为“Sources Root”,文件夹java必须标记为IntelliJ的“Generated Sources Root” 该应用程序现在按预期工作