无法编译 CMD Java 程序出错
Trouble compiling CMD Java program getting error
java 的新手,通过 CMD 编译。
我的 class DataAnalyzer.java 编译正常,但是包含主程序 DataAnalyzerTester.java 的 class 给我一个错误。
数据分析器:
package h1.q3;
import java.util.*;
public class DataAnalyzer
{
public DataAnalyzer(LinkedList<Integer> numList)
{
for (int num : numList)
{
numbers.add(num);
}
}
public int min()
{
smallest = numbers.getFirst();
for(int num : numbers)
{
if(num < smallest) smallest = num;
}
return smallest;
}
public int max()
{
largest = numbers.getFirst();
for(int num : numbers)
{
if(num < largest) largest = num;
}
return largest;
}
public int average()
{
sum = 0;
listSize = 0;
for(int num : numbers)
{
sum += num;
listSize++;
}
return sum/listSize;
}
int largest, smallest, sum, listSize;
LinkedList<Integer> numbers = new LinkedList<Integer>();
}
测试者:
package h1.q3; import java.util.*; /** * * @author pini */
public class DataAnalyzerTester {
public static void main(String[] args)
{
LinkedList<Integer> numbers = new LinkedList();
Scanner sc = new Scanner(System.in);
while(sc.hasNext())
{
numbers.add(sc.nextInt());
}
DataAnalyzer da = new DataAnalyzer(numbers);
System.out.println("Minimum: " + da.min());
System.out.println("Maximum: " + da.max());
System.out.println("Average: " + da.average());
}
我得到的错误如下:
C:\Users\pini\Documents\NetBeansProjects\Homework1\src\homework1\q3>javac DataAn
alyzer.java
C:\Users\pini\Documents\NetBeansProjects\Homework1\src\homework1\q3>javac DataAn
alyzerTester.java
DataAnalyzerTester.java:24: error: cannot find symbol
DataAnalyzer da = new DataAnalyzer(numbers);
^
symbol: class DataAnalyzer
location: class DataAnalyzerTester
DataAnalyzerTester.java:24: error: cannot find symbol
DataAnalyzer da = new DataAnalyzer(numbers);
^
symbol: class DataAnalyzer
location: class DataAnalyzerTester
Note: DataAnalyzerTester.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
2 errors
我已经尝试了所有方法,但仍然无法编译测试仪。我很确定我的代码很好,但它似乎无法识别 DataAnalyzer 对象。
谢谢
编辑
编译和 运行 测试器后,我得到以下错误:
C:\Users\pini\Documents\NetBeansProjects\Homework1\src\homework1\q3>java DataAna
lyzerTester
Exception in thread "main" java.lang.NoClassDefFoundError: DataAnalyzerTester (w
rong name: homework1/q3/DataAnalyzerTester)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:14
2)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access0(URLClassLoader.java:71)
at java.net.URLClassLoader.run(URLClassLoader.java:361)
at java.net.URLClassLoader.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)
您需要在 CLASSPATH 中包含 DataAnalyzer。通常一次编译所有源文件是最简单的。 (这是 Java,不是 C 或 C++ :))
如果它们都在同一个目录中:
javac *.java
C:\Users\pini\Documents\NetBeansProjects\Homework1\src\homework1\q3>java DataAnalyzerTester
Exception in thread "main" java.lang.NoClassDefFoundError: DataAnalyzerTester (wrong name: homework1/q3/DataAnalyzerTester)
到 运行 程序,从你所在的位置:
cd ..\..
java homework1.q3.DataAnalyzerTester
java
命令采用 完全限定的 class "main" class 名称。由于您声明 class 有一个包 homework1.q3
,因此完全限定名称是 homework1.q3.DataAnalyzerTester
。当 .class 文件位于目录树中(与 jar 文件相对)时,包对应于目录。此外,包含包的顶级目录必须在 CLASSPATH 中。 CLASSPATH 对于 Java 至关重要。你编译时javac使用的CLASSPATH和你运行时java使用的CLASSPATH;并注意每一个都可能不同(尽管通常这是导致错误的错误)。
Java 期望源文件位于一个名为 h1\q3
的目录中,相对于您正在编译的目录
将文件移动到名为
的目录
C:\Users\pini\Documents\NetBeansProjects\Homework1\src\homework1\h1\q3
并编译代码
javac h1\q3\*.java
来自 homework1
目录。
java 的新手,通过 CMD 编译。 我的 class DataAnalyzer.java 编译正常,但是包含主程序 DataAnalyzerTester.java 的 class 给我一个错误。
数据分析器:
package h1.q3;
import java.util.*;
public class DataAnalyzer
{
public DataAnalyzer(LinkedList<Integer> numList)
{
for (int num : numList)
{
numbers.add(num);
}
}
public int min()
{
smallest = numbers.getFirst();
for(int num : numbers)
{
if(num < smallest) smallest = num;
}
return smallest;
}
public int max()
{
largest = numbers.getFirst();
for(int num : numbers)
{
if(num < largest) largest = num;
}
return largest;
}
public int average()
{
sum = 0;
listSize = 0;
for(int num : numbers)
{
sum += num;
listSize++;
}
return sum/listSize;
}
int largest, smallest, sum, listSize;
LinkedList<Integer> numbers = new LinkedList<Integer>();
}
测试者:
package h1.q3; import java.util.*; /** * * @author pini */
public class DataAnalyzerTester {
public static void main(String[] args)
{
LinkedList<Integer> numbers = new LinkedList();
Scanner sc = new Scanner(System.in);
while(sc.hasNext())
{
numbers.add(sc.nextInt());
}
DataAnalyzer da = new DataAnalyzer(numbers);
System.out.println("Minimum: " + da.min());
System.out.println("Maximum: " + da.max());
System.out.println("Average: " + da.average());
}
我得到的错误如下:
C:\Users\pini\Documents\NetBeansProjects\Homework1\src\homework1\q3>javac DataAn
alyzer.java
C:\Users\pini\Documents\NetBeansProjects\Homework1\src\homework1\q3>javac DataAn
alyzerTester.java
DataAnalyzerTester.java:24: error: cannot find symbol
DataAnalyzer da = new DataAnalyzer(numbers);
^
symbol: class DataAnalyzer
location: class DataAnalyzerTester
DataAnalyzerTester.java:24: error: cannot find symbol
DataAnalyzer da = new DataAnalyzer(numbers);
^
symbol: class DataAnalyzer
location: class DataAnalyzerTester
Note: DataAnalyzerTester.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
2 errors
我已经尝试了所有方法,但仍然无法编译测试仪。我很确定我的代码很好,但它似乎无法识别 DataAnalyzer 对象。
谢谢
编辑
编译和 运行 测试器后,我得到以下错误:
C:\Users\pini\Documents\NetBeansProjects\Homework1\src\homework1\q3>java DataAna
lyzerTester
Exception in thread "main" java.lang.NoClassDefFoundError: DataAnalyzerTester (w
rong name: homework1/q3/DataAnalyzerTester)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:14
2)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access0(URLClassLoader.java:71)
at java.net.URLClassLoader.run(URLClassLoader.java:361)
at java.net.URLClassLoader.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)
您需要在 CLASSPATH 中包含 DataAnalyzer。通常一次编译所有源文件是最简单的。 (这是 Java,不是 C 或 C++ :))
如果它们都在同一个目录中:
javac *.java
C:\Users\pini\Documents\NetBeansProjects\Homework1\src\homework1\q3>java DataAnalyzerTester Exception in thread "main" java.lang.NoClassDefFoundError: DataAnalyzerTester (wrong name: homework1/q3/DataAnalyzerTester)
到 运行 程序,从你所在的位置:
cd ..\..
java homework1.q3.DataAnalyzerTester
java
命令采用 完全限定的 class "main" class 名称。由于您声明 class 有一个包 homework1.q3
,因此完全限定名称是 homework1.q3.DataAnalyzerTester
。当 .class 文件位于目录树中(与 jar 文件相对)时,包对应于目录。此外,包含包的顶级目录必须在 CLASSPATH 中。 CLASSPATH 对于 Java 至关重要。你编译时javac使用的CLASSPATH和你运行时java使用的CLASSPATH;并注意每一个都可能不同(尽管通常这是导致错误的错误)。
Java 期望源文件位于一个名为 h1\q3
的目录中,相对于您正在编译的目录
将文件移动到名为
的目录C:\Users\pini\Documents\NetBeansProjects\Homework1\src\homework1\h1\q3
并编译代码
javac h1\q3\*.java
来自 homework1
目录。