在Ubuntu上找不到Java Application主类

时间:2016-03-29 17:32:43

标签: java intellij-idea gradle

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

我几周前在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上。

1 个答案:

答案 0 :(得分:1)

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

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

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

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

  • 执行Java文件时OpenJDK是否应该具有相同的参数?
  • 如果不是: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(   package使用以下命令提供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)