【发布时间】:2015-06-05 10:44:21
【问题描述】:
我正在尝试使用 Gradle 从 this article explaining the Swing Application Framework (JSR 296) 编译代码示例 3,并使用 java 命令从命令行运行它。
我的目录布局如下:
├── build.gradle
└── src/
└── main/
└── java/
└── demo/
└── BasicSingleFrameApp.java
build.gradle 文件定义了对appframework 的依赖:
apply plugin: 'java'
repositories {
mavenCentral()
}
dependencies {
compile 'org.jdesktop:appframework:1.0.3'
}
这是BasicSingleFrameApp.java 文件,是上述文章示例的副本,通过包声明进行了增强:
package demo;
import org.jdesktop.application.*;
import javax.swing.*;
import java.awt.*;
public class BasicSingleFrameApp extends SingleFrameApplication {
JLabel label;
@Override
protected void startup() {
getMainFrame().setTitle("BasicSingleFrameApp");
label = new JLabel("Hello, world!");
label.setFont(new Font("SansSerif", Font.PLAIN, 22));
show(label);
}
public static void main(String[] args) {
Application.launch(BasicSingleFrameApp.class, args);
}
}
使用gradle build 编译工作正常且没有错误。
但是当我尝试运行 BasicSingleFrameApp 时
$ java -cp build/classes/main/ demo.BasicSingleFrameApp
我收到错误消息:
Error: Could not find or load main class demo.BasicSingleFrameApp
当我用简单的“Hello, world!”替换 BasicSingleFrameApp 类时没有依赖的打印类,一切正常。
我很困惑,因为根据我的理解,我正确设置了类路径,但我不明白为什么找不到 main 方法(具有正确的签名)。
这是我的 Java 版本:
java version "1.8.0_20"
Java(TM) SE Runtime Environment (build 1.8.0_20-b26)
Java HotSpot(TM) 64-Bit Server VM (build 25.20-b23, mixed mode)
我正在运行 Mac OS X Yosemite 10.10.2。
【问题讨论】:
-
你确定桌面 jsr jar 在类路径上吗?
-
你能说得更具体一点吗? Gradle 报告(通过
gradle dependencies)“编译源集'main'的类路径”包含org.jdesktop:appframework:1.0.3和org.jdesktop:swing-worker:1.1。 “源集'main'的运行时类路径”也是如此。 -
(几乎)和我一样的问题。 Gradle 的复杂程度让我大吃一惊……
标签: java gradle dependencies