当前位置: 首页 > 面试题库 >

可执行JAR会忽略其自己的Class-Path属性

宁修永
2023-03-14
问题内容

我使用了在Maven上找到的说明如何将任意的类路径条目添加到jar中,以向Class- Path属性添加任意条目。这是我的MANIFEST.MF文件

Manifest-Version: 1.0
Class-Path: jace-runtime.jar
Main-Class: org.jace.examples.Test

我定义org.jace.examples.Test如下:

public class Test
{
    public static void main(String[] args)
    {
        System.out.println("classpath: " + System.getProperty("java.class.path"));
        System.out.println("PeerExample: " + Class.forName("org.jace.util.ShutdownHook"));
    }
}

org.jace.util.ShutdownHook中定义的位置jace-runtime.jar。当我调用时java -jar peer_example1.jar,得到以下输出:

classpath: peer_example1.jar
线程“主”中的异常java.lang.ClassNotFoundException:org.jace.util.ShutdownHook

换句话说,Java会将可执行的JAR文件添加到类路径,但忽略了Class-Path。如果调用,java -cp jace- runtime.jar;peer_example1.jar org.jace.examples.Test我将得到预期的输出:

classpath: jace-runtime.jar;peer_example1.jar

有任何想法吗?


问题答案:

回答我自己的问题:

  1. 添加任意条目Class-Path本身就可以了。当您使用以下方法启用JAR索引时,就会出现此问题:
    <configuration>
    


    true





 类似资料:
  • 问题内容: 我在代码中的不同业务用例之间共享的大型模型(超过50个字段)上使用了MapStruct。根据入口点的不同,某些属性将被映射,而某些属性将不被映射。构建项目时,我将始终收到“警告:未映射的目标属性”消息。 我研究发现,可以通过使用语义告诉mapstruct忽略字段 问题是,考虑到我的对象具有如此多的字段,将需要大量代码来忽略每个映射器类中的每个单个属性。我也不希望此警告出现在我的日志中。

  • 问题内容: 假设我已经从使用过的代码中创建了 当我们运行可执行jar时,没有控制台。那么,这条线怎么办?如何处理这种情况? 编辑01 : 注意 :这种情况是我既不使用控制台运行也不以任何方式将任何控制台与其关联。 编辑02 :使事情更清楚: 我知道什么都不会打印,因为没有控制台..!我想知道在这种情况下如何处理这条线?生成可执行jar的字节码时,是否省略此行?还是在没有控制台的情况下忽略了这一行?

  • 我在应用程序中设置了以下Maven多模块。属性以及模块A中相应的属性类和配置: 应用程序。特性: 以及 然后是模块C和我的应用程序: 相关: 还有豆子测试。属性文件: 从中删除最后一个bean时,应用程序将启动。但是,有了这个bean定义,我得到了以下错误: 描述:无法注册在类路径资源[c/CConfiguration.class]中定义的bean“cityProperties”。已在文件[/mo

  • 这个想法是:我有N个WCF服务,它们连接并订阅了同一个Redis消息通道。这些服务使用此通道交换消息,以同步一些缓存和其他数据。 每个服务如何可以忽略自己的消息?即,如何向除我以外的所有人发布?

  • 我正在使用MapStruct和在我的代码中的不同业务用例之间共享的大模型(超过50个字段)。根据入口点的不同,有些属性将被映射,有些则不被映射。当我构建我的项目时,我总是会得到“警告:未映射的目标属性”消息。 我已经研究过,并且看到可以通过使用语义命令来告诉mapstruct忽略该字段 问题是,给定我的对象具有如此多的字段,忽略每个映射器类中的每个属性将需要大量的代码。我也不想在我的日志上出现这个

  • 问题内容: 我在程序中使用以下代码来加载属性文件: 该代码在Eclipse中运行良好。然后,将程序打包到一个名为MyProgram.jar的JAR中,然后运行它,第二行得到了NullPointerException。JAR不包含属性文件,它们都位于同一目录中。我正在使用Maven创建JAR。我该如何解决这个问题? 更新:我不想将属性文件添加到JAR中,因为它将在部署时创建。 问题答案: Balus