热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

javaderbyxsai2,javaj内的引用罐

java-j内的引用罐我有一个罐子,其内容如下图所示,下面是我的清单文件Manifest-Version:1.0Ant-Version:ApacheAn

java-j内的引用罐

我有一个罐子,其内容如下图所示,

15a681cbb6216e8464afb94941271f59.png

下面是我的清单文件

Manifest-Version: 1.0

Ant-Version: Apache Ant 1.8.3

Created-By: 1.7.0_06-b24 (Oracle Corporation)

Main-Class: org.sai.com.DerbyDemo

Class-Path: derby.jar derbyclient.jar derbynet.jar derbytools.jar

当我尝试运行广口瓶时,它抛出了2690040574979343343360,这表示它没有引用外部广口瓶中的广口瓶。

在2690040574979343343属性中,如何在实际的jar中引用jar(derby.jar等)?

7个解决方案

35 votes

为此,您将需要一个自定义的类加载器,看看One Jar。

通过One-JAR,您可以将Java应用程序及其依赖项Jar打包到一个可执行的Jar文件中。

它有一个蚂蚁任务,它也可以简化它的构建。

参考(背景)

大多数开发人员合理地假设将依赖项Jar文件放入其自己的Jar文件中,并向META-INF / MANIFEST添加Class-Path属性将达到目的:

jarname.jar

| /META-INF

| | MANIFEST.MF

| | Main-Class: com.mydomain.mypackage.Main

| | Class-Path: commons-logging.jar

| /com/mydomain/mypackage

| | Main.class

| commons-logging.jar

不幸的是,这是行不通的。 Java Launcher$AppClassLoader不知道如何使用这种Class-Path从Jar中的Jar中加载类。尝试使用jar:file:jarname.jar!/commons-logging.jar也会导致死胡同。 仅当将支持的Jar文件安装(即散布)到安装jarname.jar文件的目录中时,此方法才有效。

epoch answered 2020-01-06T02:11:12Z

22 votes

你不能 从官方教程:

通过在清单中使用Class-Path标头,可以避免   在调用Java来运行your时指定一个long -classpath标志   应用。

注意:Class-Path标头指向该目录中的类或JAR文件。   本地网络,而不是JAR文件中的JAR文件或可访问的类   通过互联网协议。 在JAR内的JAR文件中加载类   文件放入类路径,您必须编写自定义代码以加载那些   类。 例如,如果MyJar.jar包含另一个名为   MyUtils.jar,您不能在MyJar.jar的   清单以将MyUtils.jar中的类加载到类路径中。

JB Nizet answered 2020-01-06T02:11:42Z

13 votes

在Eclipse中,您可以选择导出可执行jar。

8c6b794d9f38e63832bb5de50f70efa9.png您可以选择将所有与项目相关的jar打包到生成的jar中,并通过eclipse添加自定义类加载器,该加载器将引用您在新jar中集成的jar。

11b426fb5f56b22d25a44af0bb5b8923.png

vogash answered 2020-01-06T02:12:06Z

6 votes

classloader的默认实现无法从jar-in-a-jar进行加载:为此,必须将整个“ sub-jar”加载到内存中,这抵消了jar格式的随机访问优势( 参考待定-找到支持此操作的文档后,我将进行编辑。

我建议使用JarSplice之类的程序将所有内容捆绑到一个干净的可执行jar中。

编辑:找不到源引用,但这是Sun网站上尚未解决的RFE,描述了这个确切的“问题”:[http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4648386]

另外,您可以通过将库jar文件放在classes目录的269004273672362424960子目录中,然后从命令行运行,来“测试”程序是否正常运行。 换句话说,具有以下目录结构:

classes/org/sai/com/DerbyDemo.class

classes/org/sai/com/OtherClassFiles.class

classes/lib/derby.jar

classes/lib/derbyclient.jar

在命令行中,导航到上述“ classes”目录,然后键入:

java -cp .:lib/* org.sai.com.DerbyDemo

bfishman answered 2020-01-06T02:12:45Z

2 votes

将jar文件添加到您的库中(如果使用netbeans),并修改清单文件classpath,如下所示:

Class-Path: lib/derby.jar lib/derbyclient.jar lib/derbynet.jar lib/derbytools.jar

这里有一个类似的答案

BWGathecha answered 2020-01-06T02:13:09Z

1 votes

如果您不想创建自定义类加载器。 您阅读了jar文件流。 并将其传输到File对象。 然后,您可以获取文件的网址。 将其发送到URLClassLoader,您可以根据需要加载jar文件。样品:

InputStream resourceAsStream = this.getClass().getClassLoader().getResourceAsStream("example"+ ".jar");

final File tempFile = File.createTempFile("temp", ".jar");

tempFile.deleteOnExit(); // you can delete the temp file or not

try (FileOutputStream out = new FileOutputStream(tempFile)) {

IOUtils.copy(resourceAsStream, out);

}

IOUtils.closeQuietly(resourceAsStream);

URL url = tempFile.toURI().toURL();

URLClassLoader urlClassLoader = new URLClassLoader(new URL[]{url});

urlClassLoader.loadClass()

...

蜡笔小新 answered 2020-01-06T02:13:30Z

-1 votes

在eclipse中,右键单击项目,选择RunAs-> Run Configuration并保存您的运行配置,这将在下次导出为Runnable JAR时使用。

Ziyi Wang answered 2020-01-06T02:13:50Z



推荐阅读
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 本文介绍了关于apache、phpmyadmin、mysql、php、emacs、path等知识点,以及如何搭建php环境。文章提供了详细的安装步骤和所需软件列表,希望能帮助读者解决与LAMP相关的技术问题。 ... [详细]
  • 标题: ... [详细]
  • 本文介绍了一些Java开发项目管理工具及其配置教程,包括团队协同工具worktil,版本管理工具GitLab,自动化构建工具Jenkins,项目管理工具Maven和Maven私服Nexus,以及Mybatis的安装和代码自动生成工具。提供了相关链接供读者参考。 ... [详细]
  • 如何实现JDK版本的切换功能,解决开发环境冲突问题
    本文介绍了在开发过程中遇到JDK版本冲突的情况,以及如何通过修改环境变量实现JDK版本的切换功能,解决开发环境冲突的问题。通过合理的切换环境,可以更好地进行项目开发。同时,提醒读者注意不仅限于1.7和1.8版本的转换,还要适应不同项目和个人开发习惯的需求。 ... [详细]
  • Activiti7流程定义开发笔记
    本文介绍了Activiti7流程定义的开发笔记,包括流程定义的概念、使用activiti-explorer和activiti-eclipse-designer进行建模的方式,以及生成流程图的方法。还介绍了流程定义部署的概念和步骤,包括将bpmn和png文件添加部署到activiti数据库中的方法,以及使用ZIP包进行部署的方式。同时还提到了activiti.cfg.xml文件的作用。 ... [详细]
  • Android日历提醒软件开源项目分享及使用教程
    本文介绍了一款名为Android日历提醒软件的开源项目,作者分享了该项目的代码和使用教程,并提供了GitHub项目地址。文章详细介绍了该软件的主界面风格、日程信息的分类查看功能,以及添加日程提醒和查看详情的界面。同时,作者还提醒了读者在使用过程中可能遇到的Android6.0权限问题,并提供了解决方法。 ... [详细]
  • Hibernate延迟加载深入分析-集合属性的延迟加载策略
    本文深入分析了Hibernate延迟加载的机制,特别是集合属性的延迟加载策略。通过延迟加载,可以降低系统的内存开销,提高Hibernate的运行性能。对于集合属性,推荐使用延迟加载策略,即在系统需要使用集合属性时才从数据库装载关联的数据,避免一次加载所有集合属性导致性能下降。 ... [详细]
  • 大数据Hadoop生态(20)MapReduce框架原理OutputFormat的开发笔记
    本文介绍了大数据Hadoop生态(20)MapReduce框架原理OutputFormat的开发笔记,包括outputFormat接口实现类、自定义outputFormat步骤和案例。案例中将包含nty的日志输出到nty.log文件,其他日志输出到other.log文件。同时提供了一些相关网址供参考。 ... [详细]
  • 本文讨论了在shiro java配置中加入Shiro listener后启动失败的问题。作者引入了一系列jar包,并在web.xml中配置了相关内容,但启动后却无法正常运行。文章提供了具体引入的jar包和web.xml的配置内容,并指出可能的错误原因。该问题可能与jar包版本不兼容、web.xml配置错误等有关。 ... [详细]
  • Apache Shiro 身份验证绕过漏洞 (CVE202011989) 详细解析及防范措施
    本文详细解析了Apache Shiro 身份验证绕过漏洞 (CVE202011989) 的原理和影响,并提供了相应的防范措施。Apache Shiro 是一个强大且易用的Java安全框架,常用于执行身份验证、授权、密码和会话管理。在Apache Shiro 1.5.3之前的版本中,与Spring控制器一起使用时,存在特制请求可能导致身份验证绕过的漏洞。本文还介绍了该漏洞的具体细节,并给出了防范该漏洞的建议措施。 ... [详细]
  • 本文介绍了禅道作为一款国产开源免费的测试管理工具的特点和功能,并提供了禅道的搭建和调试方法。禅道是一款B/S结构的项目管理工具,可以实现组织管理、后台管理、产品管理、项目管理和测试管理等功能。同时,本文还介绍了其他软件测试相关工具,如功能自动化工具和性能自动化工具,以及白盒测试工具的使用。通过本文的阅读,读者可以了解禅道的基本使用方法和优势,从而更好地进行测试管理工作。 ... [详细]
  • 本文介绍了解决java开源项目apache commons email简单使用报错的方法,包括使用正确的JAR包和正确的代码配置,以及相关参数的设置。详细介绍了如何使用apache commons email发送邮件。 ... [详细]
  • Java如何导入和导出Excel文件的方法和步骤详解
    本文详细介绍了在SpringBoot中使用Java导入和导出Excel文件的方法和步骤,包括添加操作Excel的依赖、自定义注解等。文章还提供了示例代码,并将代码上传至GitHub供访问。 ... [详细]
author-avatar
孙誉嘉两_365
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有