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

java运行jar包命令,javajar包运行命令linux

具体的方法是修改jar包内目录META-INF下的MANIFEST.MF文件。-Xbootclasspatha:在系统class加载后加载。然后测试运行,一切正常!注意使用相


java命令执行jar包的方式是众所周知的。 可以将Java APP应用程序项目打包到jar中。 当然,您必须指定包含main函数的main class作为此jar包的程序入口。


具体方法是修改jar包中目录META-INF下的MANIFEST.MF文件。


例如,有一个名为test.jar的jar包。 那里有一个带有主函数的主类: test.some class name


在MANIFEST.MF中添加以下语句:


main-class : test.some class name


然后,可以通过在控制台中输入java-jartest.jar来运行此jar。


但是,我们的项目需要引用其他第三方的jar包。 在eclipse中以项目jar包的形式引用了这个名为some.jar的包。 被放在项目的lib子目录下。 在最后一个项目包时还注入了此some.jar,但是在java-jar中运行此test.jar时没有发现Class异常


那么怎么办?


可以采用在运行时将其添加到classpath的方式吗? 在运行jar的同时添加classpath参数。


Java-class path some.jar-jar test.jar


用这个方法不行。 由于使用classpath指定的jar由AppClassloader加载,因此如果将-jar参数添加到java命令中,AppClassloader将只关注test.jar中的class


我该怎么引用其他的jar包?


纯真的天空、使用Bootstrap Classloader来加载这些类


在运行时可以使用以下参数:


-Xbootclasspath:完全取代了系统Javaclasspath。 最好不要用。


-Xbootclasspath/a:在加载系统类后加载。 一般都用这个。


-Xbootclasspath/p:在加载系统类之前加载。 使用时请注意。 如果和系统类冲突就不好了。


win32 Java-xbootclass path/a : some.jar; some2.jar; -jartest.jar


UNIX Java-xbootclasspath/a : some.jar : some2. jar :-jar test.jar


win32系统上的每个jar用分号分隔,unix系统下用冒号分隔


yjfdsp、使用Extension Classloader来加载


您可以将需要加载的jar丢弃在%JRE_HOME%/lib/ext下。 此目录下的jar包将在Bootstrap Classloader完成后由扩展类loader加载。 很方便,很安心。 )


方法三、还是用AppClassloader来加载,不过不需要classpath参数了


将以下代码添加到MANIFEST.MF中:


Class-Path: lib/some.jar


lib是与test.jar相同目录的子目录,test.jar引用的some.jar包位于此处。


然后测试执行,一切正常!


如果需要引用多个jar包:


class-path : lib/some.jar lib/some2. jar


用空格分隔各个jar就可以了。 请注意,使用相对路径。


此外,如果META-INF包含INDEX.LIST文件,则Class-Path配置可能无效。 INDEX.LIST是打包Jar打包工具时生成的索引文件,删除不会影响其执行。


方法四、自定义Classloader来加载


此方法是最终解决方案,基本上tomcat、jboss等著名的Java APP应用程序就是这样做的。


这种方式有点复杂,需要特意贴上来讨论。 有关ClassLoader的原理和自定义ClassLoader的信息,请参见此http://Cui Xiaodong 214.blog.163.com/blog/static/95163982009135859761


总结:


这四种方法都可以使用。 特别是当程序在非常简单的环境中运行时。 但是,在执行多任务、多个APP应用的环境中,每个APP应用期望是独立的,而第一个和第二个场景可能影响其他APP应用,因此期望选择第三和第四个。

实战一分快三三期必中jar丢弃在%JRE_HOME%/lib/ext下。 此目录下的jar包将在Bootstrap Classloader完成后由扩展类loader加载。 很方便,很安心。 )


方法三、还是用AppClassloader来加载,不过不需要classpath参数了


将以下代码添加到MANIFEST.MF中:


Class-Path: lib/some.jar


lib是与test.jar相同目录的子目录,test.jar引用的some.jar包位于此处。


然后测试执行,一切正常!


如果需要引用多个jar包:


class-path : lib/some.jar lib/some2. jar


用空格分隔各个jar就可以了。 请注意,使用相对路径。


此外,如果META-INF包含INDEX.LIST文件,则Class-Path配置可能无效。 INDEX.LIST是打包Jar打包工具时生成的索引文件,删除不会影响其执行。


方法四、自定义Classloader来加载


此方法是最终解决方案,基本上tomcat、jboss等著名的Java APP应用程序就是这样做的。


这种方式有点复杂,需要特意贴上来讨论。 有关ClassLoader的原理和自定义ClassLoader的信息,请参见此http://Cui Xiaodong 214.blog.163.com/blog/static/95163982009135859761


总结:


这四种方法都可以使用。 特别是当程序在非常简单的环境中运行时。 但是,在执行多任务、多个APP应用的环境中,每个APP应用期望是独立的,而第一个和第二个场景可能影响其他APP应用,因此期望选择第三和第四个。


推荐阅读
  • 本文整理了一份基础的嵌入式Linux工程师笔试题,涵盖填空题、编程题和简答题,旨在帮助考生更好地准备考试。 ... [详细]
  • 解决Bootstrap DataTable Ajax请求重复问题
    在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
  • 本文详细解析了Java类加载系统的父子委托机制。在Java程序中,.java源代码文件编译后会生成对应的.class字节码文件,这些字节码文件需要通过类加载器(ClassLoader)进行加载。ClassLoader采用双亲委派模型,确保类的加载过程既高效又安全,避免了类的重复加载和潜在的安全风险。该机制在Java虚拟机中扮演着至关重要的角色,确保了类加载的一致性和可靠性。 ... [详细]
  • 如何高效查看Java API和源码
    在Java学习过程中,查看API文档和源码是提高编程能力的重要手段。本文将详细介绍如何使用各种工具和方法高效地查看Java API和源码。 ... [详细]
  • 在JavaWeb开发中,文件上传是一个常见的需求。无论是通过表单还是其他方式上传文件,都必须使用POST请求。前端部分通常采用HTML表单来实现文件选择和提交功能。后端则利用Apache Commons FileUpload库来处理上传的文件,该库提供了强大的文件解析和存储能力,能够高效地处理各种文件类型。此外,为了提高系统的安全性和稳定性,还需要对上传文件的大小、格式等进行严格的校验和限制。 ... [详细]
  • Eclipse安装教程:解决Genymotion配置中的疑难杂症
    Eclipse安装教程:解决Genymotion配置中的疑难杂症 ... [详细]
  • ### 优化后的摘要本学习指南旨在帮助读者全面掌握 Bootstrap 前端框架的核心知识点与实战技巧。内容涵盖基础入门、核心功能和高级应用。第一章通过一个简单的“Hello World”示例,介绍 Bootstrap 的基本用法和快速上手方法。第二章深入探讨 Bootstrap 与 JSP 集成的细节,揭示两者结合的优势和应用场景。第三章则进一步讲解 Bootstrap 的高级特性,如响应式设计和组件定制,为开发者提供全方位的技术支持。 ... [详细]
  • 深入解析CAS机制:全面替代传统锁的底层原理与应用
    本文深入探讨了CAS(Compare-and-Swap)机制,分析了其作为传统锁的替代方案在并发控制中的优势与原理。CAS通过原子操作确保数据的一致性,避免了传统锁带来的性能瓶颈和死锁问题。文章详细解析了CAS的工作机制,并结合实际应用场景,展示了其在高并发环境下的高效性和可靠性。 ... [详细]
  • 本指南详细介绍了如何在CentOS 6.6 64位系统上以root用户身份部署Tomcat 8服务器。系统环境为CentOS 6.6 64位,采用源码安装方式。所需软件为apache-tomcat-8.0.23.tar.gz,建议将软件下载至/root/opt目录。具体下载地址请参见官方资源。本指南涵盖了从环境准备到服务启动的完整步骤,适用于需要在该系统环境下搭建高性能Web应用服务器的技术人员。 ... [详细]
  • 在Java Web服务开发中,Apache CXF 和 Axis2 是两个广泛使用的框架。CXF 由于其与 Spring 框架的无缝集成能力,以及更简便的部署方式,成为了许多开发者的首选。本文将详细介绍如何使用 CXF 框架进行 Web 服务的开发,包括环境搭建、服务发布和客户端调用等关键步骤,为开发者提供一个全面的实践指南。 ... [详细]
  • 在Java项目中,当两个文件进行互相调用时出现了函数错误。具体问题出现在 `MainFrame.java` 文件中,该文件位于 `cn.javass.bookmgr` 包下,并且导入了 `java.awt.BorderLayout` 和 `java.awt.Event` 等相关类。为了确保项目的正常运行,请求提供专业的解决方案,以解决函数调用中的错误。建议从类路径、依赖关系和方法签名等方面入手,进行全面排查和调试。 ... [详细]
  • 在日常的项目开发中,测试环境和生产环境通常采用HTTP协议访问服务。然而,从浏览器的角度来看,这种访问方式会被标记为不安全。为了提升安全性,当前大多数生产环境已经转向了HTTPS协议。本文将详细介绍如何在Spring Boot应用中配置SSL证书,以实现HTTPS安全访问。通过这一过程,不仅可以增强数据传输的安全性,还能提高用户对系统的信任度。 ... [详细]
  • 在使用SSH框架进行项目开发时,经常会遇到一些常见的问题。例如,在Spring配置文件中配置AOP事务声明后,进行单元测试时可能会出现“No Hibernate Session bound to thread”的错误。本文将详细探讨这一问题的原因,并提供有效的解决方案,帮助开发者顺利解决此类问题。 ... [详细]
  • Java测试服务器调试指南详细介绍了如何进行远程调试,并深入解析了Java Xdebug参数的使用方法。本文首先概述了Java内置的调试功能,重点介绍了JDB这一类似于GDB的强大调试工具。通过实例演示,读者可以掌握在测试环境中高效调试Java应用程序的技巧,包括配置远程调试环境和优化调试参数,以提高开发效率和代码质量。 ... [详细]
  • 本文详细介绍了如何在Java Web服务器上部署音视频服务,并提供了完整的验证流程。以AnyChat为例,这是一款跨平台的音视频解决方案,广泛应用于需要实时音视频交互的项目中。通过具体的部署步骤和测试方法,确保了音视频服务的稳定性和可靠性。 ... [详细]
author-avatar
BB15107669916
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有