Java 我的代码已编译,但赢得了';不要在终点站跑步

Java 我的代码已编译,但赢得了';不要在终点站跑步,java,Java,我试图在终端中运行这个,它编译、创建.class文件,但不会运行。代码按计划在Netbeans(Windows)中运行和执行,但不会在我的VirtualBox终端中运行。我得到的错误是它找不到主类 package stackdemo; public class ArrayStackDemo { //Demo public static void main(String args[]) { StackInt demoStack = new StackInt();

我试图在终端中运行这个,它编译、创建.class文件,但不会运行。代码按计划在Netbeans(Windows)中运行和执行,但不会在我的VirtualBox终端中运行。我得到的错误是它找不到主类

package stackdemo;

public class ArrayStackDemo {

    //Demo
    public static void main(String args[]) {
        StackInt demoStack = new StackInt();
        for (int i = 0; i < demoStack.size(); i++) {
            demoStack.push(i);
            System.out.println(demoStack.pop());
        }
    }
}

package stackdemo;
import java.util.Arrays;
import java.util.EmptyStackException;

public class StackInt {
    //Instance variables
    private int[] numberStack;
    int topOfStack = -1; //Empty stack
    private int capacity;
    private final int INITIAL_CAPACITY = 10;

    //Default constructer
    public StackInt() {
        capacity = INITIAL_CAPACITY;
        numberStack = new int[capacity];
    }

    //Size method
    public int size() {
        return capacity;
    }

    //Empty method
    public boolean empty() {
        if (topOfStack == -1) {
            return true;
        }
        return false;
    }

    //Push method
    public int push(int obj) {
        if (topOfStack == numberStack.length - 1) {
            reallocate();
        }
        topOfStack++;
        numberStack[topOfStack] = obj;
        return obj;
    }

    //Reallocate method
    public void reallocate() {
        capacity = 2 * capacity;
        numberStack = Arrays.copyOf(numberStack, capacity);
    }

    //Pop method    
    public int pop() {
        if (empty()) {
            throw new EmptyStackException();
        }
        return numberStack[topOfStack--];
    }

    //Peek method
    public int peek() {
        if (empty()) {
            throw new EmptyStackException();
        }
        return numberStack[topOfStack];
    }
}
package-stackdemo;
公共类ArrayStackDemo{
//演示
公共静态void main(字符串参数[]){
StackInt demoStack=new StackInt();
对于(int i=0;i
从包含名为
stackdemo的文件夹的文件夹中尝试此操作:

java -cp . stackdemo.ArrayStackDemo

如果您正在编译然后创建一个jar文件,那么在运行
java-jar
之前,首先确保jar文件有一个清单。清单应该在jar中调用
META\u INF/manifest.MF
。它是一个纯文本文件,至少包含行
主类:stackdemo.ArrayStackDemo

请从包含名为
stackdemo的文件夹的文件夹中尝试此操作:

java -cp . stackdemo.ArrayStackDemo

如果您正在编译然后创建一个jar文件,那么在运行
java-jar
之前,首先确保jar文件有一个清单。清单应该在jar中调用
META\u INF/manifest.MF
。它是一个纯文本文件,至少包含行
主类:stackdemo.ArrayStackDemo

通常创建如下目录结构:

src/
  stackdemo/
    ArrayStackDemo.java
    StackInt.java
bin/
然后运行编译器生成类文件

javac -s src -d bin src/stackdemo/*.java
它在
bin
目录中的适当位置创建.class文件

bin/
  stackdemo/
    ArrayStackDemo.class
    StackInt.class
然后可以使用完整的限定类名(
)执行主类


这可能看起来很麻烦,但是已经创建了构建工具来处理这个问题。在java世界中,常见的工具是,它将依赖关系管理置于普通编译的基础之上(以及更多)。许多IDE都支持这类项目,为了能够独立于IDE进行构建,我强烈建议您使用它。

通常您会创建如下目录结构:

src/
  stackdemo/
    ArrayStackDemo.java
    StackInt.java
bin/
然后运行编译器生成类文件

javac -s src -d bin src/stackdemo/*.java
它在
bin
目录中的适当位置创建.class文件

bin/
  stackdemo/
    ArrayStackDemo.class
    StackInt.class
然后可以使用完整的限定类名(
)执行主类



这可能看起来很麻烦,但是已经创建了构建工具来处理这个问题。在java世界中,常见的工具是,它将依赖关系管理置于普通编译的基础之上(以及更多)。许多IDE都支持这类项目,为了能够独立于IDE进行构建,我强烈推荐它。

可能很傻,但您是否正在尝试运行
ArrayStackDemo
StackInt
?您是如何启动应用程序的?给我们你正在执行的命令,告诉我们你在哪个目录,类文件在哪里;在这两种编码中。@Sathesh:这是一个非常糟糕的建议。“我得到的错误是它找不到主类”这意味着你启动错误,它与你的代码无关。让我们知道您是如何运行它的。可能很傻,但您是在尝试运行
ArrayStackDemo
还是
StackInt
?您是如何启动应用程序的?给我们你正在执行的命令,告诉我们你在哪个目录,类文件在哪里;在这两种编码中。@Sathesh:这是一个非常糟糕的建议。“我得到的错误是它找不到主类”这意味着你启动错误,它与你的代码无关。让我们知道您是如何尝试运行它的。工作非常完美!谢谢。你能告诉我-s和-d做什么吗?我猜-cp编译并运行?
java-help
java-help
解释这些参数-简而言之
-s
指定源路径(源所在),
-d
指定目标路径(应放置.class文件的位置)
-cp
是类路径选项。在编译相互依赖的多个文件时,可能需要使用。。。对不起,工作做得很好!谢谢。你能告诉我-s和-d做什么吗?我猜-cp编译并运行?
java-help
java-help
解释这些参数-简而言之
-s
指定源路径(源所在),
-d
指定目标路径(应放置.class文件的位置)
-cp
是类路径选项。在编译多个文件时,可能需要一个