Scala项目找不到或无法加载主类
1,出错背景
Scala项目无法创建scale和Java文件。项目没有报错,但执行时项目总是找不到项目下的类,报错信息如下所示:
错误: 找不到或无法加载主类 com.my.memTestCheck
但该类是存在的.
2,分析与解决
该项目的Models下有多个model,导致加载的时候不知道加载那个项目的。
而且在操作model下的信息时会报错说冲突:
解决办法
1,将其中一个model去掉即可,将model的Dependencies比较少的那个去掉
file->“Project Strucure”->Models 下的另一个model去掉。
2,然后在model的依赖中引入Scala的sdk
完成1之后执行的时候还会报错:
Exception in thread "main" java.lang.NoClassDefFoundError: scala/Predef$
然后在file->“Project Structure”->“Modules”->“Dependencies”
点击‘+’ 选择"2 Library"
点击Scala包,”Add Selected“ 添加进去。
3,在pom文件中设置先编译Scala
通过1,2之后程序基本可以执行,在执行的时候有时候会出现找不到符号的情况,重新rebuild之后就可以执行了但下次执行还会出现这种问题:
尤其是在使用maven打包的时候会报错:
报错:
Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project rt-n-flink: Compilation failure: Compilation failure:
/checkDemo.java:[63,9] 找不到符号
符号: 类 test_check_content
在pom文件的build->plugins下添加plugin:
<plugin>
<groupId>net.alchim31.maven</groupId>
<artifactId>scala-maven-plugin</artifactId>
<version>3.2.2</version>
<executions>
<execution>
<id>scala-compile-first</id>
<phase>process-resources</phase>
<goals>
<goal>compile</goal>
</goals>
</execution>
<execution>
<id>scala-test-compile</id>
<phase>process-test-resources</phase>
<goals>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
<configuration>
<jvmArgs>
<jvmArg>-Xms128m</jvmArg>
<jvmArg>-Xmx512m</jvmArg>
</jvmArgs>
</configuration>
</plugin>
指定scala-compile-first 先编译Scala就可以了。
这样执行和打包都不回出错了。