我导入的东西“java * classname *”不起作用

时间:2013-07-29 04:07:00

标签: java class cmd

我制作了一个基本的Java程序,上面写着“hello world”

我使用javac命令编译它,并使用java命令运行它,一切正常,我在NetBeans中创建了一个“复杂”(需要导入随机和扫描仪工作)程序,导出它并使用CMD中的javac命令编译源代码但是当我尝试运行它时会发生这种情况:

enter image description here

只有在我尝试使用文件

中使用“import”命令的代码时才会发生这种情况

编辑:

我试过“javac asd.java”和“java Asd.java”,两个都工作了然后我尝试了“java Asd”和“java asd”,没有工作,它一直给我上面的错误,代码:

package asd;
import java.util.Scanner;
import java.util.Random;
public class Asd{
    public static void main(String[] args) {
    Random r = new Random();
    Scanner scan = new Scanner(System.in);
    System.out.println("Choose a difficulty");
    boolean s = true;
    int v = 0;
    while(true){
        System.out.println("Very Easy/Easy/medium/hard/impossible/impossibler");
        System.out.print("I want it to be ");
        String x = scan.nextLine();
        if (x.equalsIgnoreCase("very easy")){
            v = 6;
            break;
        }
        else if (x.equalsIgnoreCase("easy")){
            v = 11;
            break;
        }
        else if (x.equalsIgnoreCase("medium")){
            v = 26;
            break;
        }
        else if (x.equalsIgnoreCase("hard")){
            v = 51;
            break;
        }
        else if (x.equalsIgnoreCase("impossible")){
            v = 101;
            break;
        }
        else if (x.equalsIgnoreCase("impossibler")){
            s = false;
            break;
        }
        else {
            System.out.println("invalid difficulty");
        }

    }
    v--;
    int h = 0;
    int c = 0;
    if(s){
    System.out.println("Guess a number beween 0 and " + v);
    c = r.nextInt(v);
    //int i = 0;
    while (true) {
    String b = scan.nextLine();
    int g;
    try {        
        g = Integer.parseInt(b);
        if (g < c){
            System.out.println("Try higger");
        }
        else if (g > c){
            System.out.println("Maybe less");
        }
        else {
            break;
        }
    }
    catch (Exception e) {
    System.err.println("please use a number");
    }}}
    else {
    System.out.println("Guess a number between 0 and 999999999");
    while(true) {
    c = r.nextInt();
    if ((c < 0) && (c > 999999999)) {}
    else {
    break;
    }}
    while(true) {
    String b = scan.nextLine();
    try {
        int g;
        g = Integer.parseInt(b);
        if (g < c){
            System.out.println("Try higger");
        }
        else if (g > c){
            System.out.println("Maybe less");
        }
        else {
            break;
        }
            }catch(Exception e){
            System.out.println("please use a number");
        }}
    }
    System.out.println("YOU WIN");
    System.out.print("push enter to quit");
    String k = scan.nextLine();

}
}

这是我制作的一个小游戏,但不仅仅是这个代码我需要导入的东西只是在netbeans / eclipse之外运行它时不起作用

5 个答案:

答案 0 :(得分:4)

Java区分大小写。

您使用...

编译了该类
javac asd.java

尝试使用

运行它
java Asd

这不起作用。

您应该使用

java asd

根据您提供的信息......

ps-您可能需要查看Code Conventions for the Java Programming Language

答案 1 :(得分:1)

从它的外观来看,将文件和构造函数上的类名更改为以大写字母开头的内容(作为命名约定)。

另外,请记住,虽然Windows不区分大小写,但无论平台如何,java都区分大小写! 始终使用区分大小写。

有关在现实世界中运行类和Java配置的快速介绍,请参阅此页面 http://www.sidewinder11sucommanderxer.podserver.info/Linux-SidewinderPhotoColourBalancer.html

答案 2 :(得分:1)

可能是类名和java文件名不同

前:

javac FileName.java 

创建ClassName.class
 现在,

 java ClassName 

运行良好。(记住区分大小写)

希望这有助于你

答案 3 :(得分:1)

编译.java文件时,它会转换为相应的.class文件(字节码)。在您的情况下,当您执行javac asd.java时,asd.java将转换为asd.class。现在,当您调用java解释器时,它将解释此字节码(.class文件),因此您必须为Java解释器指定与.class文件相同的名称。 (不需要.class扩展名java filename

所以改变你的

java Asd

java asd 

答案 4 :(得分:0)

所有其他答案都被您令人困惑的asd / Asd大写内容分散了注意力,但实际问题是您尝试运行该程序的地方。因为您已将您的类放在“asd”包中,所以您应该使用其完整的包和类名称来引用它。这意味着不是运行

java Asd
从,您应该将其作为

运行
java asd/Asd
来自... / src /目录的

。那是-package - / - class-。所以,如果你有一个更完整的包结构,比如com.lucca.games.asd那么你仍然会在“src”目录中使用“java”命令,但你的命令将是

java com/lucca/games/asd/Asd