我有main命令,但java命令不起作用
我知道Java需要主函数,我有一个。这段代码编译时没有错误(这段代码是设计模式手册的源代码),但是当我执行我有main命令,但java命令不起作用,java,swing,Java,Swing,我知道Java需要主函数,我有一个。这段代码编译时没有错误(这段代码是设计模式手册的源代码),但是当我执行 D:\ java SwingObserverExample Error: Could not find or load main class SwingObserverExample 以下是源代码: package headfirst.designpatterns.observer.swing; import java.awt.*; import javax.swing.*; pu
D:\ java SwingObserverExample
Error: Could not find or load main class SwingObserverExample
以下是源代码:
package headfirst.designpatterns.observer.swing;
import java.awt.*;
import javax.swing.*;
public class SwingObserverExample{
JFrame frame;
public static void main(String[] args) {
SwingObserverExample example = new SwingObserverExample();
example.go();
}
public void go() {
frame = new JFrame();
JButton button = new JButton("Should I do it?");
// Without lambdas
//button.addActionListener(new AngelListener());
//button.addActionListener(new DevilListener());
// With lambdas
button.addActionListener(event ->
System.out.println("Don't do it, you might regret it!")
);
button.addActionListener(event ->
System.out.println("Come on, do it!")
);
frame.getContentPane().add(BorderLayout.CENTER, button);
// Set frame properties
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(BorderLayout.CENTER, button);
frame.setSize(300,300);
frame.setVisible(true);
}
/*
* Remove these two inner classes to use lambda expressions instead.
*
class AngelListener implements ActionListener {
public void actionPerformed(ActionEvent event) {
System.out.println("Don't do it, you might regret it!");
}
}
class DevilListener implements ActionListener {
public void actionPerformed(ActionEvent event) {
System.out.println("Come on, do it!");
}
}
*/
为什么java找不到此程序的主类
我的java文件的目录是D:\workplace\Head-First设计模式master\Head-First设计模式master\src\headfirst\designpatterns\observer\swing
我从那里运行java命令。在run命令中包括包名
java headfirst.designpatterns.observer.swing.SwingObserverExample
Java还希望在相对于当前位置的目录headfirst\designpatterns\observer\swing
中找到与包名匹配的类,以便从中运行应用程序
D:\workplace\Head-First-Design-Patterns-master\Head-First-Design-Patterns-master\src
这是因为行
package headfirst.designpatterns.observer.swing
。
该类在包headfirst.designpatterns.observer.swing
中编译
要么删除它,要么(最好)使用
java headfirst.designpatterns.observer.swing.SwingObserverExample
使用
java
命令执行代码时,请使用classpath-cp
选项,并在存在主方法的地方添加完全限定的类名-
java -cp headfirst.designpatterns.observer.swing.SwingObserverExample
我删除了第一行,它成功了,为什么会发生这种情况?@saman,因为它现在在默认包中。这就是为什么你不必提及包裹信息。我认为Reimeus解决方案在这方面也很好case@Razib我在哪里可以找到关于这个的信息,或者我必须搜索什么关键字?@saman,搜索。您还没有说目录结构是什么样的,但是Java希望类位于相对于当前位置的目录
headfirst\designpatterns\observer\swing
…我的目录是D:\workplace\Head-First设计模式master\Head-First设计模式master\src\headfirst\designpatterns\observer\swing
在这种情况下,您可以使用运行时位置D:\workplace\Head-First设计模式master\Head-First设计模式master\src
它工作了。请在您的答案中包含这一点,我将把您的答案标记为解决方案。最好包含关于java包教程的链接。谢谢阿加尼,我有(关于你的)不相关的问题,请允许我在评论中说?