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

时间:2014-01-20 21:42:52

标签: java batch-file javac

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

我已将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上

4 个答案:

答案 0 :(得分:1)

<强>解决

批处理文件现在读取

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

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

答案 1 :(得分:0)

尝试

javac TestShipment.java
java TestShipment
pause

答案 2 :(得分:0)

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

因此,在运行compile之前,您必须java command Shipment.javaShipmentHW1.java。如果它们在同一个包中,那么你就是好的,如果没有,你必须为-cp选项指定一个合适的值。

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

答案 3 :(得分:0)

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

cd <path>/shipping
javac TestShipment.java
cd ..
java shipping/TestShipment
相关问题