2017-06-27 28 views
0

我有一个gradle应用程序,开发人员使用./gradlew从命令行完美运行开发的应用程序。但现在我试图在eclipse中调试它,所以我只是试图在eclipse中运行它。在eclipse中设置用于gradle应用程序的user.dir

我已经安装了Buildship Gradle插件并创建了一个指定工作目录并传递程序参数的运行配置。每当它尝试访问文件系统中的任何内容时,它在应用程序使用System.getProperty(“user.dir”)时使用错误的路径 - 这是默认用户的主目录而不是项目文件夹。

我试着添加一个“GRADLE_USER_HOME”类路径变量,但它似乎没有改变任何东西。我也尝试将Gradle User Home(首选项 - Gradle下)设置为项目文件夹,但这也无济于事。我也尝试将Gradle Distribution从“从导入设置”更改为“Gradle Wrapper”,但这没有帮助。

任何帮助,将不胜感激!

+2

您能否将问题重新格式化为更具“可读性”? – LazerBanana

+0

我也使用Gradle中的'ProcessBuilder'来解决这个问题。我尝试使用来自Eclipse的新ProcessBuilder()。directory(),Paths.get(“。”)。toAbsolutePath()和System.getProperty(“user.dir”)来获取当前目录。和命令行。在这两种情况下,ProcessBuilder都返回null,这意味着它使用user.dir。在这两种情况下,路径返回我的项目目录,这是我想要的。但user.dir是在Eclipse中运行时从命令行运行的项目目录,以及我的主目录。我不知道它是否“正确”,但它打破了我的锄头。 – Chris

回答

0

系统属性user.dir与Gradle无关,我敢打赌它也没有在Gradle脚本中设置。系统属性user.dir是用户启动程序时的当前工作目录。所以如果你在你的项目目录并且打电话./gradlew run,工作目录就是你的项目目录。如果你升到一级并打电话给<project>/gradlew run,你也会看到不同于eclipse的行为。

将运行配置的工作目录设置为您的项目目录,然后您应该得到正确的行为。可能你应该修复这个问题,以便不使用user.dir,如果项目取决于项目目录的路径。

+0

谢谢你的回复。我已经把项目路径放到了gradle运行配置的工作目录中。我是否应该使用其他变量来从项目中获取该路径而不是使用user.dir?当我输出user.dir的值时,我发现它只是我的主目录而不是项目目录。 – Erich

+1

我只能猜测你已经错误地设置了Eclipse运行配置,如果'user.dir'不是你设置的工作目录。我非常不喜欢Eclipse并且在可能的地方阻止使用它,所以我很难猜测你可能做错了什么。不,没有系统属性来获取项目目录。您需要通过在运行时或类似过程中确定类的存在位置来实现一些聪明的逻辑。 – Vampire

相关问题