繁体   English   中英

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

[英]Issue running java program from batch file, runs fine in IDE

我正在为我的新笔记本电脑上的一个班级做一些基本的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 <path>/shipping
javac TestShipment.java
cd ..
java shipping/TestShipment

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM