Jar与外部文件的信息交互

简介:

  JAR(Java Archive,Java 归档文件)是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件。为 J2EE 应用程序创建的 JAR 文件是 EAR 文件(企业 JAR 文件),当然JAR格式是以目前较为流行的ZIP格式为基础,因此ZIP压缩,解压软件可以直接打开JAR文件,查看其内部文件信息。

    一个包含了主类的JAR文件可以通过Java命令执行运行,有如下问题:

    1.想要传入参数;

    2.想要返回信息,并记录

    解决这个问题的方式比较了,数据库记录,写入文件,或者命令执行时添加参数等。

    今天遇到的问题是:运行JAR文件,获取外部数据作为参数,运行过程中修改参数值,结束运行时保存参数值,待下一次运行是使用该参数值。

    问题归纳:

    JAR文件运行,与外部进行少了数据交互,并且数据具有持久性。

    在CSDN的论坛中有同样的疑问

    

有网友给出的解决方案:

  总结下来就是配置文件能够被正确读取,并且能正确写入新的数据。这将面临一个很重要的问题:配置文件的路径。

  路径可以使用绝对路径和相对路径,当然为了保存JAR文件能够正常在任意位置执行,不依赖CLASSPATH,不依赖工程环境,这就要使用到Java提供的系统属性。

  下面是对系统属性做简单测试,以确保行对路径的正确性。

  

分析:

  test1-1.0.jar是可执行的Jar包,其在 target 目录下。

  test1-1.0.jar中的main方法的代码如下:

 

1
2
3
4
public  static  void  main(String [] args){
         System.out.println( "user.home:" +System.getProperty( "user.home" ));
         System.out.println( "user.dir" +System.getProperty( "user.dir" ));
     }

  从打印输出的结果看,使用系统属性中key="user.dir"将表示Jar文件所在的路径,因此可以在Jar中使用到配置文件的地方使用系统属性信息,使得配置文件的路径将是一个相对的路径。

  例如在实际代码中的应用:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
File config =  new  File(System.getProperty( "user.dir" ) + File.separator
                 "ccs.Properties" );
         Properties p =  new  Properties();
         try  {
             if  (config.exists()) {
                 System.out.println( "Load Config ccs.Properties File ..." );
                 p.load( new  FileInputStream(config));
             else  {
                 System.out.println( "Load Default Constant Config ..." );
             }
         catch  (FileNotFoundException e) {
             e.printStackTrace();
         catch  (IOException e) {
             e.printStackTrace();
         }


  这样使用Properties对象来与外部文件进行少量的数据交互,从而解决了参数问题,临时小数据保存问题。



本文转自 secondriver 51CTO博客,原文链接:http://blog.51cto.com/aiilive/1282536,如需转载请自行联系原作者

相关文章
|
7月前
|
Java Shell Docker
Docker启动后怎样运行jar包文件
Docker启动后怎样运行jar包文件
|
7月前
|
存储 Java 开发者
深入理解Jar文件:创建、使用和多版本控制
深入理解Jar文件:创建、使用和多版本控制
115 0
|
20天前
|
Java 开发者
修改JAR文件工具
本文介绍了一款名为JarEditor的IDEA插件,该插件允许用户直接对JAR包内的文件进行增删改查操作,无需先行解压。通过简单的安装与使用步骤,大大简化了传统上需要解压缩、反编译、重新编译及打包的过程。此外,JarEditor还支持对混淆过的JAR文件进行字节码级别的修改,并提供了强大的搜索功能,支持大小写、全词匹配和正则表达式搜索。对于开发者而言,这款插件无疑极大提高了处理JAR文件的效率和便捷性。
53 14
|
6月前
|
Java 数据库 数据安全/隐私保护
Java操作Excel文件导入导出【内含有 jxl.jar 】
Java操作Excel文件导入导出【内含有 jxl.jar 】
87 0
|
2月前
|
Java Windows
如何在windows上运行jar包/JAR文件 如何在cmd上运行 jar包 保姆级教程 超详细
本文提供了一个详细的教程,解释了如何在Windows操作系统的命令提示符(cmd)中运行JAR文件。
1088 1
|
6月前
|
XML 运维 Java
Spring运维之boot项目打包jar和插件运行并且设置启动时临时属性和自定义配置文件
Spring运维之boot项目打包jar和插件运行并且设置启动时临时属性和自定义配置文件
57 1
|
6月前
|
Oracle 关系型数据库 Java
实时计算 Flink版产品使用问题之源码 deploy,生成带有时间戳的jar包,如何修改配置信息
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
7月前
|
SQL Java 流计算
Flink SQL UDF(用户自定义函数)需要打包成JAR文件并上传到Flink集群中
【1月更文挑战第1天】【1月更文挑战第2篇】Flink SQL UDF(用户自定义函数)需要打包成JAR文件并上传到Flink集群中
339 0
|
6月前
|
IDE 数据可视化 Java
Java基础6-Java文件和Java包结构和常用的jar包(二)
Java基础6-Java文件和Java包结构和常用的jar包(二)
82 0
|
6月前
|
Java Unix 编译器
Java基础6-Java文件和Java包结构和常用的jar包(一)
Java基础6-Java文件和Java包结构和常用的jar包(一)
93 0

热门文章

最新文章