在Ubuntu上找不到Java Application主类

我正在使用Gradle Application Plugin来分发Windows应用程序和Ubuntu / Linux / Mac等。

几个星期前我在Linux上测试了它,它运行得很好。 今天我的Linux机器上找不到我的主类。 除了从Gradle 2.0更新到2.12之外,我无法想到我对Gradle部分所做的任何更改。 我没有测试Linux上的每一个变化,因为我通常在Windows上工作。

Windows的批处理脚本完美无瑕,它不会弹出任何错误消息。 在Linux上,我收到了经典消息:

无法找到或加载主类……

您是否了解任何可能导致Linux上出现此错误但未出现在Windows上的错误? 我认为Gradle应该完全相同地构建两个脚本,并且我不需要设置任何特殊的脚本以使其在Linux上运行。 如果我没记错,自从更新Gradle之后我没有改变任何东西,而且它在Linux上工作就好了。

// I even changed it back to the old syntax. //plugins { // id 'java' // or 'groovy' Must be explicitly applied // id 'application' //} apply plugin: 'java' apply plugin: 'application' repositories { mavenCentral() } mainClassName = "controllers.Main" 

如果您需要更多信息,请不要犹豫,问我。

编辑

我更新到IntelliJ 2016(从去年的版本)。 我不知道这是否重要,但我认为他们对Gradle做了很多改动。

编辑2

刚刚在OSX上测试了它,并且运行完美无缺。 问题出在Ubuntu和Raspbian上。

在花了好几个小时尝试不同的事情之后,我终于找到了问题所在。

Ubuntu(和Raspbian)默认使用OpenJDK。 我的应用程序的开发是在Oracle Java 8上完成的。

在Ubuntu上安装Oracle JDK之后,它就开始工作了。

我不知道这是否是预期的行为。 我有两个问题:

  • OpenJDK在执行Java文件时是否应该具有相同的参数?
  • 如果不是:Gradle不应该支持OpenJDK吗?

为了使我的解决方案完整,我想发布一些信息,告诉你如何在Ubuntu(15.10)上轻松安装Oracle JDK 8:

我使用了webupd8存储库,它提供了在Ubuntu上安装Java 8的自动化方法(这也是Ubuntu / Canonical推荐的)。

我们的PPA支持Ubuntu 15.04,14.10,14.04和12.04以及Linux Mint 17.1,17和13.使用以下命令添加PPA并安装Oracle Java 8(该软件包提供JDK8和JRE8):

 sudo add-apt-repository ppa:webupd8team/java sudo apt-get update sudo apt-get install oracle-java8-installer 

提示:如果您位于阻止下载Oracle Java归档文件所需的某些重定向的防火墙/路由器后面,您可以手动下载JDK tar.gz归档文件并将其放在/ var / cache / oracle-jdk8-installer下 – 然后,安装“oracle-java8-installer”软件包将使用本地存档而不是尝试自行下载。

安装完成后,在终端中运行“java -version”应输出如下内容:

 andrei@andrei-desktop:~$ java -version java version "1.8.0_31" Java(TM) SE Runtime Environment (build 1.8.0_31-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.31-b07, mixed mode)