我正在使用 Gradle 应用程序插件来分发适用于 Windows 和 Ubuntu / Linux / Mac 等的 Java 应用程序。
几周前我在 Linux 上对此进行了测试,效果非常好。今天,在我的 Linux 机器上找不到我的 Main 类。我不认为我对 Gradle 部分做了任何更改,除了从 Gradle 2.0 更新到 2.12 之外。我没有在 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"
如果您需要更多信息,请随时询问我。
EDIT
我更新到 IntelliJ 2016(从去年的版本)。我不知道这是否重要,但我认为他们对 Gradle 做了相当多的改变。
EDIT 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)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)