我在文本文件中编写了以下代码并将其保存为Exercise1.java:
import java.util.*;
public class Exercise1
{
public static void main(String[] args)
{
char myChar;
int myInt;
System.out.println(myChar);
System.out.println(myInt);
}
}
然后在cmd我写
javac D:\Projects\Exercise1.java
我得到2个错误,都说声明的变量可能没有被初始化。但是如果我初始化变量,上面的代码会生成“Exercise1.class”文件。然后当我写
java D:\Projects\Exercise1
我得到java.lang.ClassNotFoundException。现在我想知道的是:
答案 0 :(得分:4)
java
命令不带文件名 - 它需要 classname 。你的类的名字只是“Exercise1” - 如果它在一个包中,它可能就像“foo.bar.Exercise1”。然后,您可以单独指定类路径,以告诉JVM如何查找类,例如。
java -cp D:\Projects Exercise1
...或者您可以更改目录并利用以下事实:如果未指定类路径,JVM将在类路径中包含当前目录:
cd D:\Projects
java Exercise1
编辑:我认为你已经修复了代码中的错误。在编译之前不要尝试运行代码而不会出错。错误是由于未初始化的局部变量造成的。只有实例和静态变量被赋予默认值。
答案 1 :(得分:2)
cd D:\Projects
java -cp . Exercise1
答案 2 :(得分:2)
不确定如何编译程序,它应该在以下两行中失败:
char myChar;
int myInt;
因为你没有给出任何价值。
然后,虽然您可以执行此行来编译:
javac D:\Projects\Exercise1.java
如果不更改类路径,则应该位于Projects文件夹中,然后运行
java Exercise1
所以它打印myChar和myInt的值
答案 3 :(得分:1)
@Jon:截至目前,他还没有宣布任何包裹。
最常见的问题是类路径问题。尝试更改所述目录的路径,然后进行编译。或者尝试从set classpat = address_of directory
更改类路径你必须初始化一个“本地”变量,否则java会给出错误。 Java确实为变量提供了默认值,但没有为局部变量提供默认值 http://download.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
答案 4 :(得分:1)
回答你的第一点:
只有在实例化类的对象时,Java才会初始化为默认值。由于这里没有实例化类,因此它们未初始化。以下代码将变量初始化为默认值:
class Exercise{
int myInt;
char myChar;
}
class Exercise1{
public static void main(String []a){
//Instantiating Exercise
Exercise e=new Exercise();
System.out.println(e.myInt);
System.out.println(e.myChar);
}
}
这里我没有初始化变量,但我实例化了练习课。在实例化时,变量的值设置为默认值。如果您是java新手并且不熟悉类,我建议您阅读一些关于Java的好书。
要回答第二个问题,可以将CLASSPATH和PATH添加到环境变量中。要执行此操作,请转到系统属性 - >高级 - >环境变量。
答案 5 :(得分:0)
将我的局部变量更改为静态实例变量后,我既可以获取类文件,又无需将它们显式初始化为某些值,并运行程序并获取打印的默认值。谢谢大家的努力。