从批处理文件中运行java程序,在IDE中运行正常

我正在为我的新笔记本电脑上的一个class级做一些基本的java作业 – 问题是,我似乎无法使用教师给我的指示从我的批处理文件中编译和运行程序。

我在Path Variables设置中将Path变量设置为我的JDK。

我的程序是一个简单的运输程序,用于跟踪货运信息 – 我在NetBeans中完美地运行程序(我们的指导员建议我们用它来开发代码),但他将使用批处理文件对它们进行测试,所以我们’还建议我们在我们的系统上使用我们创建的系统对它们进行测试 – 非常简单。

问题是,我似乎无法让这个工作。 我以前从来没有这样做过,但是我已经使用.bat文件来编译和运行C ++程序,以及在unix系统上使用makefile,所以我觉得因为不自己搞清楚这一点我绝对是愚蠢的但是我的搜索都没有返回任何有用的解决方案。

我的程序包含3个.java文件:

Shipment.java – 包含在ShipmentHW1类中实现的抽象方法的接口

ShipmentHW1.java – 一个实现Shipment中抽象方法的类,并具有构造函数等来创建可用对象

TestShipment.java – 此程序的主类,它根据预设参数利用和创建ShipmentHW1对象。 这是超级基本的东西,而且,它在NetBeans IDE中运行得非常好。

给我们的说明声明批处理文件在包目录中(在这种情况下,我在我的桌面上留下了一个名为“shipping”的单独文件夹,这是包名称 – 不应该是任何问题) ,3 .java文件的位置。

他们说如果你不需要明确列出JDK的路径,那么你可以简单地

javac TestShipment.java java TestShipment.java pause 

之后我得到错误,谈论它如何“找不到符号Shipment s = new ShipmentHW1();” 我试过添加导入,但由于它们在同一个包中,它甚至不应该是一个问题。

目录路径是

 C:\Users\X\Desktop\shipping 

所有7个文件都包含在:

 TestShipment.java TestShipment.class Shipment.java Shipment.class ShipmentHW1.java ShipmentHW1.class doHW1.bat 

有谁有想法吗? 如果我太模糊,我可以提供更多信息

此外,我在Windows 8上,如果这有任何区别

解决了

批处理文件现在读取

 javac TestShipment.java Shipment.java ShipmentHW1.java cd .. java shipment.TestShipment pause 

它就像一个魅力。 任何人都有任何想法,为什么我不得不调用package.class而不是只是定期编译它?

试着做

 javac TestShipment.java java TestShipment pause 

如果没有看到TestShipment.java的内容,我会假设你对ShipmentShipmentHW1类有一些依赖。 因此,当您执行使用TestShipment类的程序时,您需要为三个(以及任何其他依赖项)中的每一个提供.class文件。

因此,在运行java命令之前,您还必须编译 Shipment.javaShipmentHW1.java 。 如果它们位于同一个包中,那么您就是好的,如果没有,则必须为-cp选项指定适当的值。

使用类名运行java时,需要指定完全限定的类名。

如果你的.java文件声明在’运送’包中,那么你可能需要从’运送’的父目录运行java,例如

 cd /shipping javac TestShipment.java cd .. java shipping/TestShipment