mackler@localhost:~/tmp/javahello$ sbt --version
sbt launcher version 0.12.1
mackler@localhost:~/tmp/javahello$ find .
.
./src
./src/main
./src/main/java
./src/main/java/learn
./src/main/java/learn/HelloWorld.java
mackler@localhost:~/tmp/javahello$ cat src/main/java/learn/HelloWorld.java
package learn;
class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, world");
}
}
mackler@localhost:~/tmp/learn/javahello$ sbt run
[info] Set current project to default-1004d5 (in build file:/home/mackler/tmp/javahello/)
[info] Updating {file:/home/mackler/tmp/javahello/}default-1004d5...
[info] Resolving org.scala-lang#scala-library;2.9.2 ...
[info] Done updating.
[info] Compiling 1 Java source to /home/mackler/tmp/javahello/target/scala-2.9.2/classes...
java.lang.RuntimeException: No main class detected.
at scala.sys.package$.error(package.scala:27)
[trace] Stack trace suppressed: run last compile:run for the full output.
[error] (compile:run) No main class detected.
[error] Total time: 4 s, completed Sep 22, 2013 4:14:21 PM
mackler@localhost:~/tmp/javahello$
答案 0 :(得分:2)
你的类声明需要公开,否则sbt(和java)看不到它:
package learn;
public class HelloWorld { // added public here
public static void main(String[] args) {
System.out.println("Hello, world");
}
}
这很有效。
> run
[info] Running learn.HelloWorld
Hello, world
编辑:事实上,这个类不需要公开让java工作,这是sbt中的一个错误,正如Mark指出的那样。
答案 1 :(得分:1)
我刚遇到类似问题。
正在编译并且在运行时没有检测到主类。
问题是我使用java 1.6和java 1.7中的编译器作为运行时,检查编译器和运行时的版本: javac -version 和 java -version 现在指向相同的版本及其确定。
祝你好运!