【问题标题】:javac error: "package x does not exist" at "import x"javac 错误:“导入 x”处的“包 x 不存在”
【发布时间】:2012-10-04 00:19:11
【问题描述】:

我正在尝试使用带有以下命令的命令提示符编译我的 java 文件“check4PrimeTest.java”:

javac -classpath .:junit.jar check4PrimeTest.java

我收到以下错误:

错误:包 junit.framework 不存在 import junit.framework.*;

我不确定为什么会收到此错误,因为我的程序中有 import junit.framework.*。

下面是我的代码:

package check4prime;
// check4PrimeTest.java

//Imports 
import junit.framework.*;

public class check4PrimeTest extends TestCase {

    //Initialize a class to work with. 
    private check4Prime check4prime = new check4Prime();

    //constructor 
    public check4PrimeTest (String name) { 
        super(name);
    }

    //Main entry point 
    public static void main(String[] args) {
        System.out.println("Starting test...");
        junit.textui.TestRunner.run(suite());
        System.out.println("Test finished...");
    } // end main() 

    //Test case 1 
    public void testCheckPrime_true() {
        assertTrue(check4prime.primeCheck(3));
    }

    //Test cases 2,3 
    public void testCheckPrime_false() {
        assertFalse(check4prime.primeCheck(0));
        assertFalse(check4prime.primeCheck(1000));
    }

    //Test case 7 
    public void testCheck4Prime_checkArgs_char_input() { 
        try {
            String [] args= new String[1];
            args[0]="r";
            check4prime.checkArgs(args);
            fail("Should raise an Exception.");
        } catch (Exception success) { 
            //successful test
        }
    } //end testCheck4Prime_checkArgs_char_input() 

    //Test case 5 
    public void testCheck4Prime_checkArgs_above_upper_bound() {
        try { 
            String [] args= new String[1];
            args[0]="10001";
            check4prime.checkArgs(args);
            fail("Should raise an Exception.");
        } catch (Exception success) { 
            //successful test
        }
    } // end testCheck4Prime_checkArgs_upper_bound() 

    //Test case 4 
    public void testCheck4Prime_checkArgs_neg_input() {
        try { 
            String [] args= new String[1];
            args[0]="-1";
            check4prime.checkArgs(args);
            fail("Should raise an Exception.");
        } catch (Exception success) { 
            //successful test
        }
    } // end testCheck4Prime_checkArgs_neg_input()

    //Test case 6
    public void testCheck4Prime_checkArgs_2_inputs() {
        try { 
            String [] args= new String[2];
            args[0]="5";
            args[1]="99";
            check4prime.checkArgs(args);
            fail("Should raise an Exception.");
         } catch (Exception success) {
            //successful test 
         } 
    } // end testCheck4Prime_checkArgs_2_inputs 

    //Test case 8 
    public void testCheck4Prime_checkArgs_0_inputs() {
        try { 
            String [] args= new String[0];
            check4prime.checkArgs(args);
            fail("Should raise an Exception.");
        } catch (Exception success) { 
            //successful test
        } 
    } // end testCheck4Prime_checkArgs_0_inputs 

    //JUnit required method. 
    public static Test suite() { 
        TestSuite suite = new TestSuite(check4PrimeTest.class);
        return suite;
    } //end suite() 

} //end check4PrimeTest

【问题讨论】:

  • 添加后效果如何?
  • 这取决于你的junit文件在哪里。我会看看我是否无法挖掘一些语法。
  • 如果你在eclipse中工作,右键项目>构建路径>配置构建路径>外部库>找到它并点击确定。 ——那是凭记忆,所以可能不是 100%
  • @weberc2 我应该把 junit4.10 放在 jdk1.7.0_03/bin 文件夹吗?
  • @JonSnow 如果您的问题已解决,请选择标记适当的答案或添加您自己的答案。

标签: java junit compiler-errors


【解决方案1】:

您收到此错误是因为您尝试导入一个包,而没有告诉您的系统该包所在的位置。以下是告诉您的系统软件包所在位置的说明:

你的 javac 目标没有指定任何东西,除了源和 目标目录 - 它不添加任何类路径条目;你需要 为适当的 JUnit jar 文件添加一个条目。查看 javac 任务 文档以获取更多详细信息。您可能需要指定路径 JUnit 作为类路径属性、嵌套元素或对 在别处声明的路径。

来源:problem running JUnit tests with Ant in Eclipse. Beginner question

prompt> javac -classpath .;$JUNIT_HOME\junit4.x.x.jar test.java

编辑:JUNIT 安装(来自here):

窗户

要在 Windows 上安装 JUnit,请按以下步骤操作:

1. Unzip the junit.zip distribution file to a directory referred to as %JUNIT_HOME%.

2. Add JUnit to the classpath (type the following into a command line shell): `set CLASSPATH=%CLASSPATH%;%JUNIT_HOME%\junit.jar`

Unix (bash)

要在 Unix 上安装 JUnit,请按以下步骤操作:

1. Unzip the junit.zip distribution file to a directory referred to as $JUNIT_HOME.

2. Add JUnit to the classpath (type the following into terminal):

`export CLASSPATH=$CLASSPATH:$JUNIT_HOME/junit.jar`

【讨论】:

  • 如何将 JUnit 的路径指定为类路径?
  • @cobolstinks junit 下载文件 'junit4.10' 我应该把它放在 jdk1.7.0_03/bin 文件夹中吗?我的目录?
  • @JonSnow,安装 junit4.10 的位置无关紧要;但是,您必须告诉您的系统在哪里寻找它。您可以按照我最近的编辑(在“JUNIT INSTALLATION”下)中描述的环境变量来执行此操作。如果您有其他问题,请告诉我。
  • 我按照您在 Windows 上安装 Junit 的说明进行操作。 1. 我在我的“程序文件(x86)”中创建了一个名为 %JUNIT_HOME% 的目录,并将 junit4.10 文件夹提取到其中 2. 从 cmd 中添加了 junit 类路径,设置 CLASSPATH=%CLASSPATH%;%JUNIT_HOME%\junit .jar 有效!但是当我尝试从桌面编译“check4PrimeTest.java”文件时,它出现了关于没有“错误:包 junit.framework 不存在导入 junit.framework.*;”的相同错误使用以下命令进行编译:C:\Users\J\Desktop>javac -classpath .:junit.jar check4PrimeTest.java
【解决方案2】:

您的 import 语句告诉编译器您需要一个工件,在这种情况下,您是在告诉编译器您需要使用 junit。但是声明你正在使用它并将它提供给 JVM 是不同的事情。您需要确保您的 junit jar 文件位于您的类路径中。

编辑:顺便说一句,使用 IDE 将为您节省时间。我意识到 Eclipse 可能令人生畏,但我建议开始使用它。除非您更像是命令行类型的人,但即便如此,如果您正在做任何严肃的事情,您也应该使用 IDE IMO。

【讨论】:

  • 就个人而言,我认为在依赖 IDE 之前了解如何手动操作是个好主意,但是一个好的 IDE 肯定会提高您的效率(我推荐 NetBeans,因为它不像 eclipse 那样容易出错恕我直言)。然而,对于每个人来说都是他自己的。
  • 是的,有点像手动算术与使用计算器。可能是为什么我不那么聪明并依赖计算器:)。
【解决方案3】:

您收到此错误是因为您正在导入包或使用无法找到的 jar 文件。

您应该检查您的环境变量中的类路径变量。 将 jar 文件或包的路径添加到类路径变量。 另外,如果显示错误“无法加载类,找不到主文件”,请将您的 java 文件的类文件路径添加到类路径变量中

希望这会有所帮助。!!

【讨论】:

    【解决方案4】:

    就我而言,在 windows 机器上,我只是 替换冒号:用分号; 并且成功了!

    javac -cp .:./abc.jar:./def.jar Practice.java Practice.java:2: 错误:com.coding.javapractice 包不存在

    将 : 替换为 ;

    javac -cp .;./abc.jar;./def.jar Practice.java

    编译成功。

    【讨论】:

      【解决方案5】:

      如果您使用 Java 9 或更高版本和 JUnit 5 或更高版本,那么 JUnit 包可能定义在一个模块中,您可能需要使用 --module-path 指向包含该模块的目录/模块化 JAR。

      【讨论】:

        【解决方案6】:

        在这里添加我的答案,以防它帮助某人。如果尝试导入多个 jar,您可以使用 * 通配符。对我有用的命令(Windows 10、Java 17)是:

        javac -cp .;* Canvas
        

        【讨论】:

          猜你喜欢
          • 2016-01-03
          • 1970-01-01
          • 2014-10-09
          • 1970-01-01
          • 2015-02-06
          • 1970-01-01
          • 2012-03-20
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多