【问题标题】:How to run a java class in Eclipse (part of a maven project with a pom file) from cmd如何从cmd在Eclipse中运行java类(带有pom文件的maven项目的一部分)
【发布时间】:2021-06-28 11:23:18
【问题描述】:

我有一个 maven 项目(文件夹 ev),我想从 cmd 运行一个 java 类(ChargerLocation.java)。我试过link 但没有用。当我从 Eclipse 运行 ChargerLocation.java 时,它可以工作,但我想从 cmd 运行它。 看起来我应该能够运行:运行配置->显示命令行并将其粘贴到我的cmd中,但是我收到以下错误'-classpath' is not recognized as an internal or external command, operable program or batch file.

  1. 为了做到这一点:运行配置->显示命令行->粘贴到cmd中,我应该位于哪个文件夹中?

  2. 我想知道 cmd 上的命令是否应该类似于Maven/apache-maven-3.6.3/bin/mvn exec:java -Dexec.mainClass="",因为它是一个整体的 maven 项目?还是没关系?

  3. 通过简单地执行javac ChargerLocation.java ,我得到了 45 个错误,似乎找不到合适的库来构建。

    ChargerLocation.java:14:错误:包 org.matsim.api.core.v01 不存在 导入 org.matsim.api.core.v01.Coord; ^ ChargerLocation.java:15:错误:包 org.matsim.api.core.v01 不存在 导入 org.matsim.api.core.v01.Id; ^ ChargerLocation.java:16:错误:包 org.matsim.api.core.v01 不存在 导入 org.matsim.api.core.v01.Scenario; ^ ChargerLocation.java:17:错误:包 org.matsim.api.core.v01.network 不存在 导入 org.matsim.api.core.v01.network.Link; ^ ChargerLocation.java:18:错误:包 org.matsim.api.core.v01.network 不存在 导入 org.matsim.api.core.v01.network.Network; ^ ChargerLocation.java:19:错误:包 org.matsim.contrib.ev.charging 不存在 导入 org.matsim.contrib.ev.charging.ChargeUpToMaxSocStrategy; ^ ChargerLocation.java:20:错误:包 org.matsim.contrib.ev.charging 不存在 导入 org.matsim.contrib.ev.charging.ChargingLogic; ^ ChargerLocation.java:21:错误:包 org.matsim.contrib.ev.charge 不存在 导入 org.matsim.contrib.ev.charging.ChargingWithQueueingLogic; ^ ChargerLocation.java:22:错误:包 org.matsim.contrib.ev.infrastructure 不存在 导入 org.matsim.contrib.ev.infrastructure.Charger; ^ ChargerLocation.java:23:错误:包 org.matsim.contrib.ev.infrastructure 不存在 导入 org.matsim.contrib.ev.infrastructure.ChargerImpl; ^ ChargerLocation.java:24:错误:包 org.matsim.contrib.ev.infrastructure 不存在 导入 org.matsim.contrib.ev.infrastructure.ChargerSpecification; ^ ChargerLocation.java:25:错误:包 org.matsim.contrib.ev.infrastructure 不存在 导入 org.matsim.contrib.ev.infrastructure.ChargerWriter; ^ ChargerLocation.java:26:错误:包 org.matsim.contrib.ev.infrastructure 不存在 导入 org.matsim.contrib.ev.infrastructure.ImmutableChargerSpecification; ^ ChargerLocation.java:27:错误:包 org.matsim.core.config 不存在 导入 org.matsim.core.config.Config;

我还附上了我在 eclipse 中的文件夹的照片。

  1. 最后,我想从 Python 调用这个 java 文件,所以我在这里要做的是:使用预先编写的命令从 Python (os.system()) 打开 cmd 以调用 java 类 (ChargerLocation.java),最后运行 java 类。

提前致谢

【问题讨论】:

  • 提到的链接指向right answer is this one的问题。
  • @howlger 问题是,当在 cmd 上复制粘贴命令时,它不会粘贴整个命令,因为 cmd 似乎不允许放置超过 8191 个字符。我从 eclipse 得到的命令几乎是 10000 个字符。有没有其他方法可以在 cmd 上运行它?
  • 所以你在 Windows 上(在其他操作系统上没有这样的限制)。对于 Java 9 或更高版本,您可以使用 @argfile(对于 Java 8 及更低版本,可以使用临时 JAR 文件作为解决方法):eclipse.org/eclipse/news/4.18/jdt.php#launch-with-argfile
  • @howlger 请看下面的照片。

标签: java python eclipse maven call


【解决方案1】:

@howlger 这是我从 Eclipse 获得的命令行。 增加字符数的不是参数,而是在运行我的主要 java 文件 org.matsim.contrib.ev.example.ChargerLocation 之前需要首先构建的不同 jar 库

据我了解,argfile 是写参数,在我的情况下没有。

【讨论】:

  • The @argfile is for all java(w).exe arguments, including the classpath or modulepath (在您的屏幕截图中,除第一行之外的所有内容)。勾选checkbox 让Eclipse 为您生成@argfile。顺便说一句,在您的情况下(在命令行上运行它)您可能希望将 javaw.exe 更改为 java.exe
  • @howlger 非常感谢你!我是 eclipse 和 java 的新手,我花了很多时间来研究它。它完美地工作。所以,现在我想更进一步,我希望能够从某个外部源调用它,即 Python。我应该可以做到:subprocess.run(["cd C:/Program Files/Java/jdk-11.0.10/bin", "java.exe "@C:\Users\danie\IdeaProjects\EV_example\EV_example\matsim-libs\contribs\ev\.temp-ChargerLocation-args-1617369242656.txt""])
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-20
  • 2011-06-16
相关资源
最近更新 更多