gpt4 book ai didi

java - Robot 在运行时无法找到 Robocode 库

转载 作者:太空宇宙 更新时间:2023-11-04 10:40:00 25 4
gpt4 key购买 nike

我的项目根目录中有编程游戏“Robocode”,因此我可以在任何地方运行该项目,而无需将其安装在 C:/robocode 中。我有一个带有以下选项的运行配置;

  • 主类: robocode.Robocode
  • 虚拟机选项: -Xmx512M -Dsun.io.useCanonCaches=false -Ddebug=true -DNOSECURITY=true -cp libs/robocode.jar
  • 工作目录: MY_ROOT\robocode_master
  • JRE:默认(9.0.1 - 我的主模块的 SDK)

我正在为连接到 MongoDBAtlas 集群以获取必要数据的 AdvancedRobot 编写一些自定义功能。我正在使用 mongo-java-driver-3.6.1。 .jar 已作为库添加到 IntelliJ,然后作为主模块的编译依赖项。测试时效果很好,我可以下载文档等。

为了说明这一点,这些库显示在“项目结构” Pane 中。

Project Structure

我已将编译输出路径设置为 robocode_master/robots 目录,这样当我从 IntelliJ 运行 Robocode 时,它​​将在正确的目录中看到自定义机器人 .class 文件,并允许我将它们添加到战斗中。

问题是,当我开始战斗并且机器人尝试做它需要做的事情时,它会抛出 java.io.FileNotFoundException 并尝试从 robocode_master/robots 目录中查找必要的库文件。

例如,它所做的第一件事是连接到数据库;

java.io.FileNotFoundException: MY_ROOT\robocode_master\robots\com\mongodb\MongoClient.class (The system cannot find the path specified)

当我将项目输出路径设置为 robots 文件夹时,启动 Robocode 时,它​​会抛出一堆 FileNotFoundException。但是,如果我将选项切换为“继承项目编译输出路径”,然后启动 Robocode,则在启动时不会出现异常。但现在,当然,我的机器人不在默认目录中,所以它看不到它们。因此,我将 out/development/... 中的新路径添加到 GUI 中的 Robocode 中并重新启动,然后我从机器人中得到相同的异常。它现在尝试在 out/development/.../com/mongodb/MongoClient.class

中查找文件

如何“告诉”Robocode 在类路径上的默认位置查找库?

最佳答案

Robocode 将在您的/robots 文件夹中查找机器人类。如果您的机器人位于其他地方,您需要通过设置 Developments Options 告诉 Robocode 在 Robocode UI 中找到这些机器人的位置。 。 Robocode 有自己的类加载器,用于加载机器人类 - 但仅限于机器人类。

必须使用 java 命令(VM 选项)的 -cp 或 -classpath 在 Robocode 的普通类路径上指定其他类/库,就像对任何其他 Java 应用程序所做的那样。

另请注意,您应该使用 Robocode 附带的 VM 选项 - 就像 robocode.bat 文件中指定的那样。特别是当您使用 Java 9 或更高版本时:

java -Xmx512M -cp libs/robocode.jar -XX:+IgnoreUnrecognizedVMOptions "--add-opens=java.base/sun.net.www.protocol.jar=ALL-UNNAMED" "--add-opens=java.base/java.lang.reflect=ALL-UNNAMED" "--add-opens=java.desktop/sun.awt=ALL-UNNAMED" robocode.Robocode %*

您可以将其复制到“run_my_stuff.bat”中,然后将内容添加到 libs/robocode.jar 之后的 -cp 中。

但是,我不确定它是否适用于 Mongo 驱动程序。 Robocode 是为简单的机器人构建的,对 CPU 周期、文件访问等资源的访问有限。

关于java - Robot 在运行时无法找到 Robocode 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49094453/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com