2014-12-04 16 views
0

我尝试使用exec运行主:行家的java的目标来运行阶对象如何在斯卡拉对象从Maven的

类已被编译,我们可以从javap的看到它有一个静态主:

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) 

UPDATE

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

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

'exec:java'是否将测试类添加到类路径中?这将是令人惊讶的恕我直言。 – 2014-12-04 22:01:54

+0

@GáborBakos你可能是在正确的轨道上。 – javadba 2014-12-05 00:00:20

回答

3

尝试财产classpathScope设置为test。看起来你的主要类是在测试中:

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

这是一个好主意,但仍然会出现同样的错误。 – javadba 2014-12-05 00:01:23

+0

对不起,我犯了一个错字,在分隔'exec'和'classpathScope'的命令中使用':'而不是'.'。你可以尝试更新? – 2014-12-05 00:05:39

+0

丁丁我们有一个赢家。谢谢 – javadba 2014-12-05 01:03:21