我想学习编写自己的软件包,所以我也不会对IDE感兴趣,我觉得我已经成为了IDE。问题是我无法弄清楚如何运行我自己的包,或者正确的方法是运行自己的包。
这是我用来学习一些基础知识的资源:http://javaworkshop.sourceforge.net/chapter3.html
这是我目前的文件结构:
Main.java
/src
projectaqua/
GameFrame.java
/classes
projectaqua/
GameFrame.class
我在项目的根目录中运行了命令:javac -d ./classes/ ./src/projectaqua/*.java
我最初在/ src / projectaqua目录中创建了一个Main文件,并尝试运行该文件。我收到了这个错误:
Main.java:1: error: package projectaqua does not exist
import projectaqua.GameFrame;
我在使用包编译Main文件时尝试在/ classes / projectaqua目录中运行应用程序,这给了我一个未定义错误的类。
这编译了我的包,我遇到的问题是我不明白你应该如何导入自己的包来运行它,以及运行包的文件在哪里?
从我在学校学到的知识,在编写GUI应用程序时,我们创建了一个具有main函数的类来实例化框架,这是唯一的工作。这个结构在哪里?
直观地看起来文件将在src文件之外,但我觉得这样就删除了src文件的用途。我没有在stackoverflow上找到任何有用的东西,如果你这样或者请指点我这个方向。
更多源代码:
GameFrame类:
package projectaqua;
import javax.swing.JFrame;
public class GameFrame extends JFrame
{
private int WINDOW_HEIGHT = 500;
private int WINDOW_WIDTH = 500;
private String title = "Project Aqua";
private boolean isVisible = true;
public GameFrame()
{
// Basic Window Defaults
setSize(WINDOW_WIDTH, WINDOW_HEIGHT);
setTitle(this.title);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Content Pane junk
// Will be added
setVisible(this.isVisible);
}
}
主要课程
import projectaqua.GameFrame;
public class Main
{
public static void main(String[] args)
{
GameFrame launch = new GameFrame();
}
}
答案 0 :(得分:2)
我现在看到你的问题了。
在你的问题中,你不清楚你在运行v。编译时遇到了麻烦。如果你发布了这个错误跟踪,我会立即清楚你的问题是什么:
unrollme-dev-dan:projectaqua Dan$ java Main
Exception in thread "main" java.lang.NoClassDefFoundError: Main (wrong name: projectaqua/Main)
另请注意,如果你用Google搜索NoClassDefFoundError
就会发现这一点。这里的道德是:理解并研究你的确切错误。
反正
unrollme-dev-dan:classes java projectaqua/Main
是你想要的。注意目录的更改。我从不打扰理解为什么,与包层次结构和文件结构层次结构之间的关系有关。
Java在设计时有两个选择:假设您正在谈论的事情是在全局包中(哎呀!)或尝试猜测它所在的包。它将工作目录下的任何文件夹视为包。因此,即使它在运行它的目录中找到了Main
类,也没有在对应于目录Main
的名称空间中找到.
类,即全局类。
当您从一个目录运行并告诉它在projectaqua/
中运行时,它现在正在查找以projectaqua
开头的类。
或者,如果你运行
unrollme-dev-dan:projectaqua java projectaqua.Main
它寻找合适的东西。
答案 1 :(得分:0)
在项目的根目录下尝试此命令
javac -cp ./classes -d ./classes ./src/projectaqua/*.java
同时确保您的Main.java和GameFrame.java在开头都有package projectaqua;