我的项目根目录中有编程游戏“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,然后作为对主模块的编译依赖项。它在测试中运行良好,我可以下载文档等。
为了说明,这些库显示在“项目结构”窗格中。
我已将编译输出路径设置为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 时,它会抛出一堆 FileNotFoundExceptions。但是,如果我将选项切换到“继承项目编译输出路径”,然后启动 Robocode,我不会在启动时遇到异常。但是现在当然,我的机器人不在默认目录中,所以它看不到它们。因此,我将out/production/...中的新路径添加到 GUI 中的 Robocode 并重新启动,然后我从机器人那里得到相同的异常。它现在尝试在out/production/.../com/mongodb/MongoClient.class中查找文件
如何“告诉”Robocode 在类路径的默认位置查找库?