如何在Maven中运行Scala对象中的main

时间:2014-12-04 21:59:29

标签: scala maven

我正在尝试使用exec:maven的java目标来运行scala对象

该类已经编译过,我们可以从javap看到它有一个静态main:

javap sql/hbase/target/scala-2.10/test-classes/org/apache/spark/sql/hbase/HBaseMainTest.class | grep main
  public static void main(java.lang.String[]);

让我们尝试按如下方式运行:

mvn  exec:java -Dexec.mainClass="org.apache.spark.sql.hbase.HBaseMainTest"

然而结果

java.lang.ClassNotFoundException: org.apache.spark.sql.hbase.HBaseMainTest
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:281)
at java.lang.Thread.run(Thread.java:724)

更新

Gabor提供了答案,这是工作解决方案:

mvn  exec:java -Dexec.mainClass="org.apache.spark.sql.hbase.HBaseMainTest" -Dexec.classpathScope="test"

1 个答案:

答案 0 :(得分:3)

尝试将属性classpathScope设置为test。看来你的主要课程是测试之中:

mvn  exec:java -Dexec.mainClass="org.apache.spark.sql.hbase.HBaseMainTest" -Dexec.classpathScope="test"