Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用Ant编译_Java_Eclipse_Ant_Junit - Fatal编程技术网

Java 用Ant编译

Java 用Ant编译,java,eclipse,ant,junit,Java,Eclipse,Ant,Junit,我有两个.class文件,应该进行黑盒测试。它们在一个包中1.2.3。我的测试也在同一个包中。在同一个包中有第三个.class文件,其目的是为我要测试的Orders类保存一个enum变量。在eclipse中,我可以通过直接导入枚举来让junit测试在订单中工作,例如 import one.two.three.Orders.ShippingMethod; 如果我尝试使用Ant或通过命令行执行此操作,则会出现错误“package one.two.three.Orders不存在”。如果我将导入语句更

我有两个.class文件,应该进行黑盒测试。它们在一个包中
1.2.3
。我的测试也在同一个包中。在同一个包中有第三个.class文件,其目的是为我要测试的
Orders
类保存一个enum变量。在eclipse中,我可以通过直接导入枚举来让junit测试在
订单
中工作,例如

import one.two.three.Orders.ShippingMethod;
如果我尝试使用Ant或通过命令行执行此操作,则会出现错误“package one.two.three.Orders不存在”。如果我将导入语句更改为

import one.two.three.*;

Ant、Eclipse和终端找不到我拥有的任何类。我需要用Ant编译和运行测试用例。这些类位于
bin/one/two/three
中,非常感谢您的帮助。

您需要设置类路径

我不知道Eclipse上的具体情况(我使用NetBeans),但我单击了
Libraries->addjar/Folder

对于命令行,您需要指定类路径


java-cp path/to/my/files(…)
导入
Orders
,因为它是类,并且假设
ShippingMethod
是该类中的枚举,引用其类型的正确方法是
Orders.ShippingMethod

在Eclipse中,尝试导入类的内部类型有时会产生奇怪的效果。这可能是因为Eclipse没有使用jdk中打包的
javac
编译器,而Ant使用了它(必须这样做,因为Ant没有提供嵌入式编译器)

这应该适用于所有情况,因为这是正确的方法

 import one.two.three.Orders.ShippingMethod;
可能会很容易混淆大多数编译器,因为没有

 one/two/three/Orders/ShippingMethod.class
文件,这意味着类装入器在运行时找不到它


我敢打赌这是Eclipse嵌入式编译器中的一个bug,我已经看到了很多。好的一面是,Eclipse嵌入式编译器的存在是为了在代码编辑和Eclipse之间提供更快、更紧密的集成。在黑暗的一面,这意味着有时Eclipse编译器和
javac
编译器是不同的。当有疑问时,
javac
编译器可能是正确的。

thx edwin,当我导入1.2.3.Orders时,它说在包1.2.3中找不到符号Orders是公共类吗?如果没有,你可能会遇到公共、私人、受保护的障碍……这是一个测试类的作业,教授只给了我们.class文件。他给我们的指示是.class文件和测试文件必须在同一个包中,以便use@Steve尝试在类文件上运行javap。它采用与java命令相同的常规参数。它应该打印出关于类的足够详细的信息,以确定其中真正包含的内容。希望在这篇文章和这篇文章之间,你会得到你所需要的。非常感谢Edwin,我一直认为eclipse是java之神,是万无一失的。在抛弃它并通过命令行运行之后,我能够微调一些错误并让它工作。再次感谢
 one/two/three/Orders/ShippingMethod.class