在 Ubuntu 上找不到 Java 应用程序主类

2023-12-06

我正在使用 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(使用前将#替换为@)

在 Ubuntu 上找不到 Java 应用程序主类 的相关文章

  • 为什么即使我的哈希码值相同,“==”也会返回 false

    我写了一个像这样的课程 public class HashCodeImpl public int hashCode return 1 public static void main String args TODO Auto generat
  • 如何调试“com.android.okhttp”

    在android kitkat中 URLConnection的实现已经被OkHttp取代 如何调试呢 OkHttp 位于此目录中 external okhttp android main java com squareup okhttp 当
  • 从 MATLAB 调用 Java?

    我想要Matlab程序调用java文件 最好有一个例子 需要考虑三种情况 Java 内置库 也就是说 任何描述的here http docs oracle com javase 6 docs api 这些项目可以直接调用 例如 map ja
  • 将 Gradle 脚本从根目录导入到子项目中

    我想在我的根 build gradle 中执行 apply from gradle script common gradle 并使其可用于我的所有子项目 我尝试将应用程序放入 子项目 中 但由于路径是相对的 因此并不总是可以解析 子项目并不
  • Runtime.exec 处理包含多个空格的参数

    我怎样才能进行以下运行 public class ExecTest public static void main String args try Notice the multiple spaces in the argument Str
  • 断言 Kafka 发送有效

    我正在使用 Spring Boot 编写一个应用程序 因此要写信给 Kafka 我这样做 Autowired private KafkaTemplate
  • 将非 Android 项目添加到 Android 项目

    我在 Eclipse 中有三个项目 Base Server 和 AndroidClient Base和Server是Java 1 7项目 而AndroidClient显然是一个android项目 基础项目具有在服务器和 Android 客户
  • 如何在 Spring 中使 @PropertyResource 优先于任何其他 application.properties ?

    我正在尝试在类路径之外添加外部配置属性资源 它应该覆盖任何现有的属性 但以下方法不起作用 SpringBootApplication PropertySource d app properties public class MyClass
  • Android 无法解析日期异常

    当尝试解析发送到我的 Android 客户端的日期字符串时 我得到一个无法解析的日期 这是例外 java text ParseException 无法解析的日期 2018 09 18T00 00 00Z 位于 偏移量 19 在 java t
  • 如何在字段值无效的情况下更改 Struts2 验证错误消息?

    我在 Web 表单上使用 Struts2 验证 如果字段假设为整数或日期 则
  • Jetty、websocket、java.lang.RuntimeException:无法加载平台配置器

    我尝试在 Endpoint 中获取 http 会话 我遵循了这个建议https stackoverflow com a 17994303 https stackoverflow com a 17994303 这就是我这样做的原因 publi
  • 如何在JPanel中设置背景图片

    你好 我使用 JPanel 作为我的框架的容器 然后我真的想在我的面板中使用背景图片 我真的需要帮助 这是我到目前为止的代码 这是更新 请检查这里是我的代码 import java awt import javax swing import
  • 轻松的反应

    我有一个与这里描述的类似的案例 动态更改RESTEasy服务返回类型 https stackoverflow com questions 3786781 dynamically change resteasy service return
  • Java Swing - 如何禁用 JPanel?

    我有一些JComponents on a JPanel我想在按下 开始 按钮时禁用所有这些组件 目前 我通过以下方式显式禁用所有组件 component1 setEnabled false 但是有什么办法可以一次性禁用所有组件吗 我尝试禁用
  • 列表过滤器内的 Java 8 lambda 列表

    示例 JSON id 1 products id 333 status Active id 222 status Inactive id 111 status Active id 2 products id 6 status Active
  • 在java中以原子方式获取多个锁

    我有以下代码 注意 为了可读性 我尽可能简化了代码 如果我忘记了任何关键部分 请告诉我 public class User private Relations relations public User relations new Rela
  • Java 正则表达式中的逻辑 AND

    是否可以在 Java Regex 中实现逻辑 AND 如果答案是肯定的 那么如何实现呢 正则表达式中的逻辑 AND 由一系列堆叠的先行断言组成 例如 foo bar glarch 将匹配包含所有三个 foo bar 和 glarch 的任何
  • 子类构造函数(JAVA)中的重写函数[重复]

    这个问题在这里已经有答案了 为什么在派生类构造函数中调用超类构造函数时 id 0 当创建子对象时 什么时候在堆中为该对象分配内存 在基类构造函数运行之后还是之前 class Parent int id 10 Parent meth void
  • Android View Canvas onDraw 未执行

    我目前正在开发一个自定义视图 它在画布上绘制一些图块 这些图块是从多个文件加载的 并将在需要时加载 它们将由 AsyncTask 加载 如果它们已经加载 它们只会被绘制在画布上 这工作正常 如果加载了这些图片 AsyncTask 就会触发v
  • java'assert'和'if(){}else exit;'之间的区别

    java和java有什么区别assert and if else exit 我可以用吗if else exit代替assert 也许有点谷歌 您应该记住的主要事情是 if else 语句应该用于程序流程控制 而assert 关键字应该仅用于

随机推荐

  • CMake将不同子目录中的静态库链接到一个静态库

    我使用CMake构建了一个由多个嵌套静态库组成的项目 下图显示了类似但简单的结构 TestProject CMakeLists txt Main cpp level2 level2 cpp level2 h CMakeLists txt l
  • 需求.txt 与 setup.py

    我开始使用 Python 我已经添加requirements txt and setup py到我的项目 但是 我仍然对这两个文件的用途感到困惑 我读过setup py是为可重新分发的东西而设计的requirements txt是为不可再分
  • 用 C++ 以编程方式打开文档

    我有一个用 C 编写的控制台程序 现在 每当程序用户在控制台中输入 手册 时 我想打开一个手册文档 txt 或 pdf 格式 我怎样才能做到这一点 任何教程的链接都会有帮助 谢谢 尝试编译这段代码 Open cpp to Open exe然
  • 使用递归查找所有索引

    我必须编写一个程序来查找列表或字符串中特定元素的所有索引值 我have to使用递归 我的函数只能接受两个参数 我的问题是我的程序只找到第一个索引然后停止 我该如何更改它以满足我的要求 My code def find all L v re
  • 在 Android 中打开 pdf 时出现问题:文件路径无效

    我需要从我的 Android 应用程序打开一个 pdf 文件 我将 pdf 保存在应用程序包文件夹 data data com app example files 中 我已经在 android 模拟器中安装了 adobe reader 应用
  • Highcharts 中的径向饼图数据标签

    如何将数据标签置于饼图楔形 内部 的中心并与饼图半径对齐 而不是水平或垂直对齐 这是我所追求的图像 如果不是开箱即用的功能 也许有人有一个插件 或者甚至一些实验代码也会有用 Highcharts 不提供在饼图中自动旋转数据标签的选项 您可以
  • 构建 android 项目时出现 CXX1405 cmake 异常

    当我构建项目时出现错误 如下所示 我尝试了很多事情但从未成功 我使用的是 m1 MacBook 这与此错误有关吗 CXX1405 构建 Json 时出现异常启动进程 命令 Users serhat Library Android sdk c
  • 以编程方式创建扩展的 UItableViewCell

    我有一个 tableviewcell 我想在点击时展开和折叠 我找到的所有示例都是故事板基础 我正在尝试以编程方式执行此操作 我最初的想法是创建一个子视图并将其限制到内容视图 但是当我使用以下命令调整单元格的高度时heightForRowA
  • 如何从对于内存来说太大的文件构建(或预先计算)直方图

    python 是否有一个图形库不需要将所有原始数据点存储为numpy数组或列表以绘制直方图 我有一个数据集对于内存来说太大 并且我不想使用子采样来减少数据大小 我正在寻找的是一个可以获取生成器输出的库 从文件生成的每个数据点 作为float
  • 在 Mac 上的 XAMPP 上安装 PHP 7.0 国际化扩展 (Intl)

    我按照此处概述的说明进行操作 在 Mac 上的 XAMPP 上安装 PHP 国际化扩展 Intl 运行 sudo pecl install intl 从地窖中选择了正确的文件 然后发生了这个错误 private tmp pear temp
  • 是否有 CheckStyle 规则强制 if else 关键字位于 if/else 梯形图中的同一行?

    基于这个问题看来 CheckStyle 的默认模板将允许 if else 梯子将if and else有换行符 意思是我愿意this被标记为违规的代码 if true System out println 20 else if true S
  • 按字体计算 Microsoft Word 文档中的字数?

    我有一个包含代码示例的大型文档 我想知道字体 Calibri Body 中所有文本的字数 无论大小如何 我想忽略 Consolas 等 我有一个按斜体计数的宏 作为示例发布 但无法运行它 Sub IgnoreItalics Dim lngW
  • R Shiny 观察事件问题

    当在数据表中选择行并且有人按下 删除行 开关时 我试图从数据框中删除行 input click rows selected 给出所选行的 id 我使用observeEvent和observe似乎有问题 因为代码在我第一次轻按开关时删除了选定
  • Facebook 分享/评论无法正常工作

    在我的页面中 我添加了 Facebook 评论和分享按钮 一切都是按照他们的指示完成的 所以 我已经包含了加载脚本 div div
  • Facelets:使用 ui:param 将 bean 名称传递给操作属性

    由于某些自定义组件在其属性中需要 bean 名称 而不是 bean 实例 因此我需要在页面之间传递实际的 bean 名称 由于 bean 本身也被非自定义组件使用 我想避免使用额外的ui param 就像这里描述的那样在 中传递操作 因为它
  • 奇怪 - mysql 的 sql::SQLException 没有被它的类型捕获,而是被捕获为 std::exception 并成功地返回

    我正在使用 mysql c 连接器和这个 有点简化的 代码 try statement gt setString 1 word statement gt executeUpdate catch sql SQLException e I do
  • 如何以delphi形式使用Gif动画

    我认为 gif 动画图像没有原生支持 怎样才是最好的方法呢 任何允许这样做的免费组件 我正在考虑使用 TImage 和 ImageList Timer 但我需要将 gif 的每一帧导出到单独的 bmp 文件 在现代 Delphi 中这非常简
  • 使用 JSON 填充图表时 Google 图表中的工具提示

    我目前正在使用 JSON 填充我的 Google 图表 但我还需要自定义工具提示 目前我的 JSON 如下所示 cols id label date type string id label price type number rows c
  • python / scikit-learn 中距离计算的稀疏实现

    我有一个 svmlight 格式的大型 100K x 30K 且 非常 稀疏的数据集 加载如下 import numpy as np from scipy cluster vq import kmeans2 from scipy spati
  • 在 Ubuntu 上找不到 Java 应用程序主类

    我正在使用 Gradle 应用程序插件来分发适用于 Windows 和 Ubuntu Linux Mac 等的 Java 应用程序 几周前我在 Linux 上对此进行了测试 效果非常好 今天 在我的 Linux 机器上找不到我的 Main