首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

jlink中的记录:ed应用程序抛出异常

jlink 是 Java 9 引入的一个工具,用于创建自定义的、优化的 Java 运行时镜像。它允许开发者将应用程序及其依赖打包成一个单独的运行时镜像,这样可以减少应用程序的启动时间和内存占用。

jlink 中的记录显示 ed 应用程序抛出异常时,这通常意味着在创建运行时镜像的过程中遇到了问题。以下是一些可能的原因和解决方法:

基础概念

  • jlink: Java Linker,用于创建自定义的 Java 运行时镜像。
  • 异常: 在程序执行过程中发生的错误事件,通常会导致程序终止。

可能的原因

  1. 依赖缺失: 应用程序所需的某些库或模块没有正确包含在镜像中。
  2. 版本不兼容: 使用的 Java 版本与 jlink 不兼容。
  3. 配置错误: jlink 的配置文件或命令行参数设置不正确。
  4. 代码问题: 应用程序代码中存在 bug,导致在链接阶段抛出异常。

解决方法

  1. 检查依赖: 确保所有必要的库和模块都已正确添加到 jlink 的模块路径中。
  2. 检查依赖: 确保所有必要的库和模块都已正确添加到 jlink 的模块路径中。
  3. 验证 Java 版本: 确保使用的 Java 版本支持 jlink。通常,Java 9 及以上版本都支持。
  4. 验证 Java 版本: 确保使用的 Java 版本支持 jlink。通常,Java 9 及以上版本都支持。
  5. 检查配置: 仔细检查 jlink 的命令行参数和配置文件,确保没有拼写错误或遗漏。
  6. 检查配置: 仔细检查 jlink 的命令行参数和配置文件,确保没有拼写错误或遗漏。
  7. 调试代码: 如果怀疑是代码问题,可以在不使用 jlink 的情况下运行应用程序,以确定具体的异常来源。
  8. 调试代码: 如果怀疑是代码问题,可以在不使用 jlink 的情况下运行应用程序,以确定具体的异常来源。

示例代码

假设我们有一个简单的模块化应用程序 com.example.ed,其 module-info.java 如下:

代码语言:txt
复制
module com.example.ed {
    requires java.base;
    exports com.example.ed;
}

主类 Main.java:

代码语言:txt
复制
package com.example.ed;

public class Main {
    public static void main(String[] args) {
        System.out.println("Hello, ED!");
    }
}

编译并创建运行时镜像的步骤:

代码语言:txt
复制
javac --module-path mods -d mods/com.example.ed src/com.example.ed/module-info.java src/com.example.ed/com/example/ed/Main.java
jlink --module-path $JAVA_HOME/jmods:mods --add-modules com.example.ed --output my-ed-runtime

应用场景

  • 嵌入式系统: 在资源受限的环境中运行 Java 应用程序。
  • 微服务: 为每个微服务创建独立的运行时镜像,提高部署效率。
  • 桌面应用: 减少桌面应用程序的启动时间和内存占用。

通过以上步骤和方法,可以有效地诊断和解决 jlink 中出现的异常问题。如果问题依然存在,建议查看详细的错误日志,以便进一步分析具体原因。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

异常1.异常简介2.捕获异常3.异常的传递4.抛出自定义的异常5.异常处理中抛出异常

·把可能出现问题的代码,放在try中 ·把处理异常的代码,放在except中 2.python异常处理 BaseException            所有异常的基类 SystemExit                  ...5.捕获所有异常 ? ? 6.else 在if中,它的作用是当条件不满足时执行的实行;同样在try...except...中也是如此,即如果没有捕获到异常,那么就执行else中的事情 ?...·如果一个异常是在一个函数中产生的,例如函数A---->函数B---->函数C,而异常是在函数C中产生的,那么如果函数C中没有对这个异常进行处理,那么这个异常会传递到函数B中,如果函数B有异常处理那么就会按照函数...,并没有返回到函数test1中进行执行,而是在函数test3中继续执行 4.抛出自定义的异常 你可以用raise语句来引发一个异常。...,这样就不保证程序的稳定了,所以在以后的开发中,如果重写了父类的__init__方法,最好是先调用父类的这个方法,然后再添加自己的功能 5.异常处理中抛出异常 ?

1.8K30
  • C++构造函数和析构函数中抛出异常的注意事项

    从语法上来说,构造函数和析构函数都可以抛出异常。但从逻辑上和风险控制上,构造函数和析构函数中尽量不要抛出异常,万不得已,一定要注意防止资源泄露。在析构函数中抛出异常还要注意栈展开带来的程序崩溃。...1.构造函数中抛出异常 在C++构造函数中,既需要分配内存,又需要抛出异常时要特别注意防止内存泄露的情况发生。...由于在类B的构造函数中抛出了异常,而此异常并未在构造函数中被捕捉,所以导致类B的构造函数的执行中断,对象b并未构造完成。在类B的构造函数“回滚”的过程中,c的析构函数和类A的析构函数相继被调用。...最后,由于b并没有被成功构造,所以main()函数结束时,并不会调用b的析构函数,也就很容易造成内存泄露。 2.析构函数中抛出异常 在析构函数中是可以抛出异常的,但是这样做很危险,请尽量不要这要做。...} } 在面对析构函数中抛出异常时,程序猿要注意以下几点: (1)C++中析构函数的执行不应该抛出异常; (2)假如析构函数中抛出了异常,那么你的系统将变得非常危险,也许很长时间什么错误也不会发生

    2.4K10

    群友:事务中的异常不也抛出了,为什么没catch到而回滚?

    但还是收到了很多没有理解的反馈,主要是根据前文给出的线索去跟踪,是获得到了回滚的标示和异常,而让大家不理解的是,javax.validation.ConstraintViolationException...异常不是最后也向外抛出了,那么为什么test4里catch没有能够捕获到呢?...所以,这里教大家一个简单方法来理解这次test4的catch为什么没有捕获异常。...org.springframework.orm.jpa.JpaTransactionManager 然后尝试触发test4的执行,通过DEBUG,我们都可以观察到: test4中我们加的断点,除了47行没进入...所以,前文中我们跟踪的事务回滚所抛出的异常,其实是在test4中的try-catch块执行完之后才抛出的,所以内部的这个catch是无法捕获异常的,这里完全就是catch了个寂寞。

    53220

    【Kotlin 协程】协程异常处理 ⑤ ( 异常传播的特殊情况 | 取消子协程示例 | 子协程抛出异常后父协程处理异常时机示例 | 异常聚合 | 多个子协程抛出的异常会聚合到第一个异常中 )

    文章目录 一、异常传播的特殊情况 1、取消子协程示例 2、子协程抛出异常后父协程处理异常时机示例 二、异常聚合 ( 多个子协程抛出的异常会聚合到第一个异常中 ) 一、异常传播的特殊情况 ---- 在...异常 , 该异常是正常的操作 , 会被忽略 ; 如果 抛出 CancellationException 异常 取消 子协程 , 其 父协程 不会受其影响 ; 如果 子协程 抛出的是 其它异常 , 该异常会被传递给...2 抛出异常后 , 两个子协程 都会退出 , 但是 子协程 1 的 finally 代码要执行 1000 ms , 这里父协程 等待 子协程 1 执行完毕后 , 才会处理 子协程 抛出的异常 ; 代码示例..., 但是 子协程 1 中的 finally 代码中的 1 秒执行完毕了 ; 子协程 2 早早抛出异常退出了 , 子协程 1 还执行了 1 秒 , 最后 父协程 等 子协程 1 执行完毕后 , 才处理的...java.lang.IllegalArgumentException 00:07:36.516 I 父协程执行完毕 二、异常聚合 ( 多个子协程抛出的异常会聚合到第一个异常中 ) ---- 父协程

    75810

    .NET Framework 的 bug?try-catch-when 中如果 when 语句抛出异常,程序将彻底崩溃

    在 .NET Framework 4.8 中,try-catch-when 中如果 when 语句抛出异常,程序将彻底崩溃。而 .NET Core 3.0 中不会出现这样的问题。...如果在执行用户筛选的表达式期间发生异常,则将放弃该异常,并视筛选表达式的值为 false。 在这种情况下,公共语言运行时继续搜索当前异常的处理程序。...即当 when 块中出现异常时,when 表达式将视为值为 false,并且此异常将被忽略。 示例程序 鉴于官方文档中的描述,我们可以编写一些示例程序来验证这样的行为。...因为 when 中的异常被忽略,因此不会进入到外层的 catch 块中;因为 when 中出现异常导致表达式值视为 false,因此进入了更合适的异常处理块 Catch 2 中。...如果我们以 Visual Studio 调试启动此程序,可以看到抛出了 CLR 异常: 以下是在 Visual Studio 中单步跟踪的步骤: Issue 和行为 由于本人金鱼般的记忆力,我竟然给微软报了三次这个

    22720

    JavaFX 11发行说明

    使用jlink创建的最小jdk映像时,Swing interop失败 使用包含JavaFX 11 jmods包中的javafx.swing模块的jlink创建的最小Java映像将无法运行FX / Swing...()会抛出ISE 应用程序生命周期 JDK-8089454 [HTMLEditor]选择删除CENTER对齐 控制 JDK-8154039 选择TabPane :: getTabs()中未包含的选项卡时内存泄漏...Shift + DOWN会导致抛出异常 控制 JDK-8200285 TabDragPolicy.REORDER阻止显示ContextMenu 控制 JDK-8201285 重复使用具有disable...构建的,则JDK构建无法编译javafx.graphics module-info.java 图像 JDK-8203801 PrismLoaderGlue.stg文件中缺少Classpath异常 图像...中的版本号是错误的 其他 JDK-8195799 在javafx模块中使用系统记录器而不是平台记录器 其他 JDK-8195800 消除对javafx模块中sun.reflect.misc的依赖 其他

    6.7K60

    安卓9.0将限制应用程序访问,Android SDK中未记录的API

    日前,一位来自XDA的开发者表示,其在AOSP(安卓开放源代码项目)中最近的一个提交报告中发现,谷歌可能会在安卓9.0中采用更加严格的API访问权限,限制应用程序访问Android SDK中未记录的API...长期以来,安卓系统的开放性是许多安卓爱好者所津津乐道的一个特性,但同时,这样的开放性也导致了安卓系统的一系列问题。...有XDA开发者表示,安卓系统正变得越来越像苹果的iOS。 关于API: API即应用程序编程接口,英文全称Application Programming Interface。那么API怎么用呢?...举个简单的例子,如果第三方微博客户端想要实现微博的功能,如点赞等,开发者只需要从相应的API接口获取微博的数据并进行调用即可,无需去重新开发这样的功能。...Android软件开发工具包(SDK)为开发人员提供了测试和构建新的Android应用程序所需的API库和工具,随着Android的每一个新版本都有一系列新的API可供开发者通过Android SDK使用

    1.5K50

    【Java学习笔记之三十二】浅谈Java中throw与throws的用法及异常抛出处理机制剖析

    3、两者都是消极处理异常的方式(这里的消极并不是说这种方式不好),只是抛出或者可能抛出异常,但是不会由函数去处理异常,真正的处理异常由函数的上层调用处理。......}中对其进行处理,那怕是最简单的一句输出语句,或栈输入e.printStackTrace(); 3.如果是捕捉IO输入输出流中的异常,一定要在try{...}catch{...}后加finally...,也可以是一般的程序语句;catch(){……}用于抓住异常,(Exception e)中Exception是异常的类型,必须是Exception(Exception是所有异常类的父类)的子类。...{}定义当出现异常时的处理方法。finally{……}表示不管异常是否发生,都得进行finally{}中的处理。...在捕捉异常的try{...}语句块中,如果出现了异常,则该语句(出现异常的语句)后的程序语句都不执行,而是跳到catch{...}语句块中执行异常的处理。

    85460

    抛弃IDE — 在window下使用VScode搭建ARM开发环境

    操作系统接口协议 posix 开发Linux、Mac应用程序 异常处理模型(32bit CPU) dwarf 版本新,性能较好,不支持64位 异常处理模型(32bit CPU) sjlj 版本低,同时支持...32位和64位 异常处理模型(64bit CPU) seh 版本新,性能较好,不支持32位 异常处理模型(64bit CPU) sjlj 版本低,但支持32位和64位 点击Next ,其实就是自动下载...的操作窗口 7、使用 Jlink 烧录问题说明 以上的步骤我在使用 ST-LINK 的时候一切正常,但是在用到Jlink 的时候,也是遇到了问题,主要是2个问题,一个是Jlink使用SWD模式的问题,另外一个是...openocd不识别jlink的问题。...7.4 换板子出现的Jlink烧录问题(未解决) 最近用了另外一块L051的板子在上次修改的Jlink上面烧录,发现出现如下问题: 这个网上查了很多,也没直接得到答案,自己也修改过配置,也没有得到答案

    3.6K50

    keil结合st-link使用SWO的两种调试方法笔记

    它是利用Cortex内核中ITM模块来实现此功能。 由于手头上没有串口,因此只能通过st-link进行信息输出,增加调试方法。jlink也可以通过RTT和SWO的方法输出信息。...这个swo的方法比串口打印要更加有效率,而且不会干扰cpu运行。以后如果有jlink和stlink,都可以不用串口打印了,从打印效率来说:UART JLink-RTT。...记得nrf52系列是默认使用JLink的RTT功能的。...原文提到:与基于 UART 的文字输出不同,使用 ITM 输出不会对应用程序造成很大的延迟,在 ITM 内部有一个 FIFO,它使写入的输出消息得到缓冲。...可见segger公司的实力还是很强大的。后续有用到RTT功能再写一遍记录文档。

    2.8K30

    Java:安全无虞之地

    只有当应用程序使用 Java 数据库连接 (JDBC) 时,才会发生 SQL 注入。不使用 SQL 的应用程序不会受到 SQL 注入的攻击。...开发人员和运行应用程序的人员从中受益,因为他们可以查看应用程序并缩减需要担心的内容,只关注正在使用的部分。这突显了 OpenJDK 漏洞小组季度安全公告中模块信息的重要性。...开发人员可以查看这些模块并检查每个模块中与其应用程序相关的风险。例如,敏感数据和暴露风险;这在日志记录模块中很常见,但在像 Image/IO 这样的模块中则少得多。...一个 概念图 展示了这些模块的外观以及它们之间的关系。创建应用程序或服务的开发人员可以使用 jlink 等工具 创建自定义 JRE,从而移除某些模块。...对于自定义 jlink-ed JRE,任何报告 JRE 易受此缺陷攻击的扫描程序都是不正确的。移除组件会移除该组件中的漏洞和风险。黑客无法攻击不存在的东西。

    7610

    Java 基础 Docker 镜像从 674MB 缩减到 58MB 的经验分享

    随着应用程序的复杂性和规模不断增加,开发者们面临的一个主要挑战是如何有效管理和优化应用程序的体积。...本文将深入探讨如何通过 jlink 工具生成更小的 Java 运行时环境(JRE)镜像,并自动化整个过程。我们将分析不同模块的依赖关系,确保仅包括运行应用程序所需的最小模块。...:我们有两个阶段,第一阶段用于使用 jlink 构建自定义JRE镜像,第二阶段用于将应用打包在一个精简的Alpine镜像中。...目前镜像的大小依然较大,这是因为在 jlink 命令中使用 --add-modules ALL-MODULE-PATH 时,我们包含了运行应用程序所需的所有模块,但我们并不需要所有模块。...这很好,但我们能否自动化这个过程,而不是手动运行 jdeps 命令然后将模块复制到 jlink 命令中?

    25410

    深度解析Java 9核心新特性

    =10m MyApplication 这条命令配置JVM记录所有GC相关的日志到一个名为gc.log的文件中,并设置了一些日志选项和轮转策略。...} } 9. jlink工具(JEP 282) jlink是一个新的命令行工具,它允许开发者创建一个轻量级的、针对特定应用程序的Java运行时映像。...通过指定所需的模块和依赖关系,jlink可以生成一个包含最小运行时环境的映像,这有助于减小应用程序的部署大小并提高其启动速度。这对于构建微服务、容器化应用程序或嵌入式系统特别有用。...jlink主要通过命令行使用,用于创建一个自定义的Java运行时映像: jlink --module-path /path/to/jmods --add-modules java.se --output...结语 这些新特性和改进使得Java 9成为一个更加强大和灵活的编程语言平台,能够更好地满足现代应用程序开发的需求。

    19600
    领券