java基础jar包程序

合集下载

shell脚本运行java程序jar的方法

shell脚本运行java程序jar的方法

shell脚本运⾏java程序jar的⽅法在UBuntu上部署项⽬的时候,我们往往通过⼀段shell来启动程序,甚⾄是通过crontab定时任务来定时的调⽤java程序,但是很奇怪的⼀个问题就是,⽐如我写了⼀个如下的shell脚本:#!/bin/shexport mypath=/root/project/wishnomaljava -Xmx3000m -Xms3000m -server -d64 -Dfile.encoding=UTF-8 -Dfetch.threads=300 -classpath $mypath/:$mypath/wish2-assembly-1.0.0.jar newstandard.CrawlerNewStandard $* echo "END"⼿动命令⾏运⾏该脚本的时候,可以正常运⾏java程序,但是使⽤crontab定时任务,貌似就不起效果了分析可能原因:1)是否当前⽤户对此shell脚本没有可执⾏权限,通过ls -lrt /apps/service/mtk/checking/run.sh查看脚本是有可执⾏,但是有执⾏权限呀-rwxr-xr-x2)既然单独运⾏脚本没问题,那会不会是定时的问题呢?于是写了⼀个简单的输出的shell脚本通过定时也是没问题的。

说明还是脚本的问题。

后来上⽹查了下,想到可能是脚本中环境变量的原因,因为通过crontab运⾏脚本,是以root⽤户,⽽不是当前⽤户,于是cat /etc/profile查看环境变量,然后修改脚本如下:分析可能原因:1)是否当前⽤户对此shell脚本没有可执⾏权限,通过ls -lrt /apps/service/mtk/checking/run.sh查看脚本是有可执⾏,但是有执⾏权限呀-rwxr-xr-x2)既然单独运⾏脚本没问题,那会不会是定时的问题呢?于是写了⼀个简单的输出的shell脚本通过定时也是没问题的。

【Java】class.jar和sources.jar及javadoc.jar三种jar包

【Java】class.jar和sources.jar及javadoc.jar三种jar包

【Java】class.jar和sources.jar及javadoc.jar三种jar包⼀、普及jar包知识 例如(举例⼦解释)类⽂件(.class) test-java-1.0-SNAPSHOT.jar⽂档包(API) test-java-1.0-SNAPSHOT-javadoc.jar资源包(code) test-java-1.0-SNAPSHOT-sources.jar⼆、使⽤⽅法1.类⽂件(.class) test-java-1.0-SNAPSHOT.jar 反编译,最暴⼒直接的⽅法,将jar包拖进IDEA⾥查看2.⽂档包(API) test-java-1.0-SNAPSHOT-javadoc.jar 解压该⽂件,打开index.html查看3.资源包 test-java-1.0-SNAPSHOT-sources.jar 拖进IDEA直接查看⼆、⽣成⽅法1.类⽂件(.class) test-java-1.0-SNAPSHOT.jar 直接使⽤maven打包⽣成即可2.⽂档包(API) test-java-1.0-SNAPSHOT-javadoc.jar 使⽤ maven-javadoc-plugin 插件⽣成javadoc.jar3.资源包 test-java-1.0-SNAPSHOT-sources.jar 使⽤ maven-source-plugin 插件⽣成sources.jar完整pom⽂件如下:1<?xml version="1.0" encoding="UTF-8"?>2<project xmlns="/POM/4.0.0"3 xmlns:xsi="/2001/XMLSchema-instance"4 xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd">5<modelVersion>4.0.0</modelVersion>67<groupId>com.test</groupId>8<artifactId>test-java</artifactId>9<version>1.0-SNAPSHOT</version>10<dependencies>11<dependency>12<groupId>junit</groupId>13<artifactId>junit</artifactId>14<version>4.12</version>15<scope>compile</scope>16</dependency>17</dependencies>1819<build>2021<plugins>22<plugin>23<!-- Maven 编译插件24指定maven编译的jdk版本,如果不指定,25 maven3默认⽤jdk 1.5 maven2默认⽤jdk1.3 -->26<groupId>org.apache.maven.plugins</groupId>27<artifactId>maven-compiler-plugin</artifactId>28<version>3.8.1</version>29<configuration>30<!-- ⼀般⽽⾔,target与source是保持⼀致的,但是,有时候为了让程序能在其他版本的jdk中运⾏(对于低版本⽬标jdk,源代码中不能使⽤低版本jdk中不⽀持的语法),会存在target不同于source的情况 --> 31<source>1.8</source><!-- 源代码使⽤的JDK版本 -->32<target>1.8</target><!-- 需要⽣成的⽬标class⽂件的编译版本 -->33<encoding>UTF-8</encoding><!-- 字符集编码 -->34<verbose>true</verbose>35<showWarnings>true</showWarnings>36<fork>true</fork><!-- 要使compilerVersion标签⽣效,还需要将fork设为true,⽤于明确表⽰编译版本配置的可⽤ -->37<executable><!-- path-to-javac --></executable><!-- 使⽤指定的javac命令,例如:<executable>${JAVA_1_4_HOME}/bin/javac</executable> -->38<compilerVersion>1.3</compilerVersion><!-- 指定插件将使⽤的编译器的版本 -->39<meminitial>128m</meminitial><!-- 编译器使⽤的初始内存 -->40<maxmem>512m</maxmem><!-- 编译器使⽤的最⼤内存 -->41<!-- <compilerArgument>-verbose -bootclasspath ${java.home}\lib\rt.jar</compilerArgument>&lt;!&ndash; 这个选项⽤来传递编译器⾃⾝不包含但是却⽀持的参数选项 &ndash;&gt;-->42</configuration>43</plugin>4445<!-- ⽣成javadoc⽂档包的插件 -->46<plugin>47<groupId>org.apache.maven.plugins</groupId>48<artifactId>maven-javadoc-plugin</artifactId>49<version>3.2.0</version>50<executions>51<execution>52<id>attach-javadocs</id>53<goals>54<goal>jar</goal>55</goals>56</execution>57</executions>58</plugin>5960<!-- ⽣成sources源码包的插件 -->61<plugin>62<groupId>org.apache.maven.plugins</groupId>63<artifactId>maven-source-plugin</artifactId>64<version>3.2.1</version>65<configuration>66<attach>true</attach>67</configuration>68<executions>69<execution>70<!-- 在package阶段之后会执⾏源代码打包 -->71<phase>package</phase>72<goals>73<goal>jar-no-fork</goal>74</goals>75</execution>76</executions>77</plugin>78</plugins>79</build>8081</project>配置好插件后,使⽤maven package命令既能在target⽬录中查看到三个jar包 命令:mvn package如果要把三种jar包安装到本地仓库 命令:mvn install如果要把三种jar包发布到远程仓库 命令:mvn deploy。

java开发常用jar包

java开发常用jar包

java开发常用jar包mail.jar与activation.jar里面包含了activation.jar和mail.jar两个包.通过里面的类的调用便可以达到发送电子邮件的目的commons-beanutils.jarApache Commons包中的一个,包含了一些Bean工具类类。

必须使用的jar包。

commons-collections.jarApache Commons包中的一个,包含了一些Apache开发的集合类,功能比java.util.*强大commons-lang.jarApache Commons包中的一个,包含了一些数据类型工具类,是ng.*的扩展。

必须使用的jar包。

commons-logging.jar:Apache Commons包中的一个,包含日志功能commons-io.jarApache Commons包中的一个,java.io.*的扩展,输入输出,支持文件上传commons-fileupload.jarApache Commons包中的一个,是一个通过Http接收上传的文件并处理结果文件的库dom4j-1.4.jar 和jaxen-1.1.1.jar是一个Java的XML API,类似于jdom,用来读写XML文件的。

Hibernate使用dom4j解析XML配置文件和XML映射元文件。

必需的。

ehcache-1.2.jarHibernate可以使用不同cache缓存工具作为二级缓存。

EHCache是缺省的cache缓存工具。

如果没有其它的可选缓存工具,则为必需的。

hibernate3.jarhibernate3的核心类库。

itext.jar是用于生成PDF文档的一个java类库。

通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。

iTextAsian.jaritext中关于亚洲编码的类库,在这里用于中文字体的输入。

java打jar包的几种方式详解

java打jar包的几种方式详解

java打jar包的⼏种⽅式详解⼀、制作只含有字节码⽂件的jar包我们先来看只含有字节码⽂件,即只含有class⽂件的jar包怎么制作,这是最简单的形式1、最简单的jar包——直接输出hello最终⽣成的jar包结构META-INFHello.class⽅法步骤(1)⽤记事本写⼀个Hello.java的⽂件class Hello{public static void main(String[] agrs){System.out.println("hello");}}(2)⽤命令⾏进⼊到该⽬录下,编译这个⽂件 javac Hello.java(3)将编译后的Hello.class⽂件打成jar包 jar -cvf hello.jar Hello.class c表⽰要创建⼀个新的jar包,v表⽰创建的过程中在控制台输出创建过程的⼀些信息,f表⽰给⽣成的jar包命名(4)运⾏jar包 java -jar hello.jar 这时会报如下错误 hello.jar中没有主清单属性 添加Main-Class属性 ⽤压缩软件打开hello.jar,会发现⾥⾯多了⼀个META-INF⽂件夹,⾥⾯有⼀个MENIFEST.MF的⽂件,⽤记事本打开Manifest-Version: 1.0Created-By: 1.8.0_121 (Oracle Corporation) 在第三⾏的位置写⼊ Main-Class: Hello (注意冒号后⾯有⼀个空格,整个⽂件最后有⼀⾏空⾏),保存 再次运⾏ java -jar hello.jar ,此时成功在控制台看到 hello ,成功2、含有两个类的jar包——通过调⽤输出hello最终⽣成的jar包结构META-INFTom.classHello.class⽅法步骤(1)⽤记事本写⼀个Hello.java和⼀个Tom.java的⽂件 ⽬的是让Hello调⽤Tom的speak⽅法class Hello{public static void main(String[] agrs){Tom.speak();}}class Tom{public static void speak(){System.out.println("hello");}}(2)编译: javac Hello.java 此时Hello.java和Tom.java同时被编译,因为Hello中调⽤了Tom,在编译Hello的过程中发现还需要编译Tom(3)打jar包,这次我们换⼀种⽅式直接定义Main-Class。

-jar命令用法-概述说明以及解释

-jar命令用法-概述说明以及解释

-jar命令用法-概述说明以及解释1.引言1.1 概述在Java开发中,-jar命令是一个经常使用的命令,用于执行打包为jar 文件的Java应用程序。

它为我们提供了一种方便的方式来启动和运行独立的Java应用程序,无需考虑类路径的问题。

使用-jar命令时,我们只需要提供jar文件的路径作为参数,Java虚拟机(JVM)会自动搜索并加载jar文件中的主类作为应用程序的入口点。

这使得我们可以将整个应用程序打包到一个jar文件中,方便部署和发布。

与传统的java命令相比,-jar命令有一些独特的特性。

首先,它会忽略类路径(即不会加载classpath中的类),而是只加载jar文件中的类。

这使得我们可以确保应用程序只使用了我们想要的类,而不会引入其他不必要的类或版本冲突。

其次,-jar命令还可以让我们在jar文件中指定一个清单文件(manifest),其中可以包含额外的元数据和配置信息。

通过这种方式,我们可以在运行应用程序时传递一些参数或配置信息,而不必在命令行中逐个指定。

另外,-jar命令还能够处理一些常见的问题,比如自动解压缩jar文件、加载外部依赖库等。

这些功能使得我们可以更加方便地打包和分发我们的应用程序,减少了很多繁琐的配置和部署步骤。

总之,-jar命令是Java开发中一个非常有用的工具,它简化了应用程序的启动和部署过程,提高了开发效率。

在本文的接下来部分,我们将详细介绍如何正确地使用-jar命令,以及一些常见问题的解决方法。

1.2 文章结构文章结构部分的内容:文章结构是指文章的整体框架和组织方式,它对于读者来说具有重要的指导作用。

本文将按照以下结构展开介绍-jar命令的用法。

首先,文章将引言部分,对本文的主题进行概述。

我们将介绍-jar命令在Java开发中的重要性以及它的基本功能和作用。

同时,我们还会介绍本文的文章结构和目的,以便读者可以清晰地了解本文的内容和目标。

接下来,正文部分将涵盖两个要点。

jar包介绍大全用途作用详解java

jar包介绍大全用途作用详解java

jta.jar 标准JTA API必要commons-collections.jar 集合类 必要antlr.jar ANother Tool for Language Recognition 必要asm.jar ASM字节码库 如果使用“cglib” 则必要asm-attrs.jar ASM字节码库 如果使用“cglib” 则必要ehcache.jar EHCache缓存 如果没有其他的缓存,则是必要的cglib.jar CGLIB字节码解释器 如果使用“cglib” 则必要commons-beanutils.jar 提供对java反射和自省API的包装 对bean操作的类,可以访问类的属性及get和set方法commons-digester.jar Digester基于规则的XML文档解析,主要用于XML到java对象的映射commons-lang.jar 包含了一些数据类型工具类,是ng.* 的扩展 必须使用的包commons-pool.jar,commons-dbcp.jar DBCP数据库连接池,Apache的Jakarta组织开发的,Tomcat4的连接池也是DBCPcommons-chain.jar Jakarta Commons的子项目Chain将上述两个模式组合成一个可复用的Java框架用于描述顺序的处理流程 strutsheShale应用框架作为处理HTTP请求处理的基础机制commons-validator.jar 用来帮助进行验证的工具。

比如验证Email字符串,日期字符串等是否合法。

Burlap.jar 支持ejb,远程调用Remoting方面的类buffalo.jar 处理xml的jar包commons-betwixt.jar 用xml生成报表时需要用到的包commons-el.jar Apache 组织中一个用来解析 JSP 2.0 的表达式语言的 Javahtmlparser.jar 是一个纯的java写的html解析的库,它不依赖于其它的java库文件,主要用于改造或提取html类库jakarta-oro.jar java正则表达式所需的包jaxen.jar 在jdom中使用xpath需要导入jaxen.jar包mina-core.jar Apache MINA(Multipurpose Infrastructure for Network Applications) 是 Apache 组织一个较新的项目,它为开发高性能和高可用性的网络应用程序提供了非常便利的框架这里主要介绍的是Hibernate使用到的.jarHibernate一共包括了23个jar包,令人眼花缭乱。

java-jar命令运行jar包时指定外部依赖jar包

java-jar命令运行jar包时指定外部依赖jar包

java-jar命令运⾏jar包时指定外部依赖jar包你们都知道⼀个java应⽤项⽬能够打包成⼀个jar,固然你必须指定⼀个拥有main函数的main class做为你这个jar包的程序⼊⼝。

具体的⽅法是修改jar包内⽬录META-INF下的MANIFEST.MF⽂件。

好⽐有个叫作test.jar的jar包,⾥⾯有⼀个拥有main函数的main class:test.someClassName。

咱们就只要在MANIFEST.MF⾥⾯添加以下⼀句话:htmlMain-Class: test.someClassName⽽后咱们能够在控制台⾥输⼊java -jar test.jar便可以运⾏这个jar。

可是咱们这个项⽬须要引⽤其余第三⽅的jar包,在eclipse⾥⾯以项⽬jar包的形式引⽤了这个叫作some.jar的包,当时放在项⽬的lib⼦⽬录下,最后项⽬打包时把这个some.jar也打进来了,可是⽤java -jar执⾏这个test.jar的时候报找不到Class异常,缘由就是jar引⽤不到放在本⾝内部的jar包。

那怎么办?运⾏时将其加⼊classpath的⽅式⾏不⾏?就是在运⾏jar的同时加⼊classpath参数:javajava -classpath some.jar -jar test.jar这种⽅式是不⾏的,由于使⽤classpath指定的jar是由AppClassloader来加载,java命令加了-jar 参数之后,AppClassloader就只关注test.jar范围内的class了,classpath参数失效。

那该怎么引⽤其余的jar包呢?linux⽅法1、使⽤Bootstrap Classloader来加载这些类算法咱们能够在运⾏时使⽤以下参数:sql-Xbootclasspath:彻底取代系统Java classpath.最好不⽤。

-Xbootclasspath/a: 在系统class加载后加载。

命令行下编译java并生成jar包(1)

命令行下编译java并生成jar包(1)

命令行下编译java并生成jar包jar文件听说过吗,没有?或者陌生!好,没关系,这就是我们的第一站:打包发布。

为什么会有这个玩意呢,首先,这是jar的全称:JavaTM Archive (JAR) file,是的,就是java 存档文件。

这有点类似zip文件,想一想它是干什么的用的呢,压缩!?没错就是要压缩,将我们原先零散的东西放到一下,重新组织,所有这些目的只有一个:方便!好了,不用管他是怎么压缩的,我们的重点是哪些是我们要压缩的(输入),还有压缩成了什么(输出),进而将它发布(部署)。

那我们的输入(要压缩的东西)主要是class文件,还有辅助的资源(这其中可能有图片,jsp文件,html文件等等)。

Jar技术在jdk1.1版本中就已存在,在1.2中又有了增强。

接下来说说jar的好处吧,这是官方的描述:安全,快速下载,压缩,猎取包,版本化包,可携。

说了这么多,我们现在开始实施。

先打开命令提示符(win2000或在运行筐里执行cmd命令,win98为DOS提示符),输入jar –help,然后回车(如果你盘上已经有了jdk1.1或以上版本),看到什么:用法:jar {ctxu}[vfm0Mi] [jar-文件] [manifest-文件] [-C 目录] 文件名…选项:-c 创建新的存档-t 列出存档内容的列表-x 展开存档中的命名的(或所有的〕文件-u 更新已存在的存档-v 生成详细输出到标准输出上-f 指定存档文件名-m 包含来自标明文件的标明信息-0 只存储方式;未用ZIP压缩格式-M 不产生所有项的清单(manifest〕文件-i 为指定的jar文件产生索引信息-C 改变到指定的目录,并且包含下列文件:如果一个文件名是一个目录,它将被递归处理。

清单(manifest〕文件名和存档文件名都需要被指定,按‘m‘ 和‗f‘标志指定的相同顺序。

示例1:将两个class文件存档到一个名为‗classes.jar‘ 的存档文件中:jar cvf classes.jar Foo.class Bar.class示例2:用一个存在的清单(manifest)文件‗mymanifest‘ 将foo/ 目录下的所有文件存档到一个名为‗classes.jar‘ 的存档文件中:jar cvfm classes.jar mymanifest -C foo/ .来个小例子试试看:我们只有一个HelloWorld,如下:public class HelloWorld{public static void main(String[] args){System.out.println(―Hi, Hello World!‖);}}我将这个java文件存到C盘跟目录下,ok,接下来,在先前打开的命令提示符下(跳转到C盘提示符下),我们输入javac HelloWorld.java,然后继续输入:jar cvf hello.jar HelloWorld.class,回车后去你的C盘看看,多了什么,没错hello.jar 。

JAR包介绍大全用途作用详解JAVA

JAR包介绍大全用途作用详解JAVA

JAR包介绍大全用途作用详解JAVAJAR(Java Archive)是Java的一种标准压缩文件格式,它是一种将多个Java类文件、资源文件、配置文件和元数据文件打包成一个文件的方式。

JAR包的使用具有很多作用和用途,下面将详细介绍。

1. 代码打包和发布:通过将Java类文件打包成JAR包,可以方便地将整个项目的代码进行打包和发布。

这样可以简化代码的传输、分发和部署。

2. 代码模块化:JAR包可以将一组相关的Java类打包成一个模块,便于代码的管理和维护。

不同的模块可以根据需要进行组合,提高代码的可复用性和可扩展性。

3.应用程序部署:将应用程序的所有依赖的类和资源文件统一打包到一个JAR包中,方便进行部署和发布。

可以减少部署过程中的错误和问题。

4. 库文件管理:JAR包可以用来管理和分发Java库文件。

开发者可以将常用的库文件打包成JAR包,并在其他项目中使用。

5. 类库扩展:在Java中,可以通过类路径(CLASSPATH)来指定需要加载的类库。

而JAR包可以通过设置类路径来扩展Java的类库。

只需将JAR包加入到类路径中,就可以在代码中使用其中的类和方法。

6.版本管理:JAR包可以用来管理和分发不同版本的软件。

通过使用不同的JAR包命名规则或目录结构,可以区分不同版本的软件,方便用户选择特定版本的功能和功能。

7.防止类文件冲突:当使用多个第三方类库时,可能会发生类文件冲突的情况。

通过将每个类库打包成一个JAR包,并且每个类库中的类在包的结构中唯一,可以避免类文件冲突的问题,保证程序的正确运行。

8. 加载器和类加载:在Java中,类加载器负责将类文件加载到Java虚拟机中。

而JAR包是可以被类加载器加载的,可以通过类加载器的机制来加载JAR包中的类。

9. Java application扩展:JAR包可以作为Java应用程序的扩展,可以在运行时动态地加载和使用JAR包中的类和方法。

这种机制可以实现插件式的应用程序设计。

java开发常用的jar包的作用解释

java开发常用的jar包的作用解释

java开发常用的jar包的作用解释转载自:/chaod5659/article/details/8250845 java开发中主要用到的jar包描述commons-io.jar:可以看成是java.io的扩展,用来帮助进行IO功能开发.它包含三个主要的领域:Utilityclasses-提供一些静态方法来完成公共任务.Filters-提供文件过滤器的各种实现.Streams-提供实用的Stream,reader与writer实现.commons-beanutils.jar:提供对Java反射和自省API的包装,主要提供了对于JavaBean进行各种操作。

commons-digester.jar:它能方便地将XML文档所定义的元素转化为JAVA对象,其实它的用法有点象栈(当然内在的原理就是那个古老的东西,只是提供了更高一层的封装)。

commons-lang.jar:它扩展了标准ngAPI,增加了字符串操作方法、基本数值方法、对象反射、创建和串行化以及System属性。

它还包含一个可继承的enum类型、对多种嵌套的Exception 类型的支持、对java.util.Date的增强以及用于构建方法的实用程序,例如自动生成toString()的结果、自动实现hashCode()和equals()方法、数组操作、枚举、日期和时间的处理等等。

ArrayUtils–用于对数组的操作,如添加、查找、删除、子数组、倒序、元素类型转换等;BitField–用于操作位元,提供了一些方便而安全的方法;BooleanUtils–用于操作和转换boolean或者Boolean及相应的数组;CharEncoding–包含了Java环境支持的字符编码,提供是否支持某种编码的判断;CharRange–用于设定字符范围并做相应检查;CharSet–用于设定一组字符作为范围并做相应检查;CharSetUtils–用于操作CharSet;CharUtils–用于操作char值和Character对象;ClassUtils–用于对Java类的操作,不使用反射;ObjectUtils–用于操作Java对象,提供null安全的访问和其他一些功能;RandomStringUtils–用于生成随机的字符串;SerializationUtils–用于处理对象序列化,提供比一般Java序列化更高级的处理能力;StringEscapeUtils–用于正确处理转义字符,产生正确的Java、JavaScript、HTML、XML和SQL代码;StringUtils–处理String的核心类,提供了相当多的功能;SystemUtils–在ng.System基础上提供更方便的访问,如用户路径、Java版本、时区、操作系统等判断;Validate–提供验证的操作,有点类似assert断言;WordUtils–用于处理单词大小写、换行等。

java开发常用jar包

java开发常用jar包
stax-api-1.0.1.jar 解析XML
struts2-core-2.0.14.jar struts2核心jar
struts2-spring-plugin-2.0.6.jar struts2整合Spring所需jar
taglibs-datetime.jar Apache开源组织提供标签库,用于格式化日期。
db2jcc.jar java连接DB2所需jar
db2jcc_license_cu.jar java连接DB2所需jar
dom4j-1.6.1.jar 解析XML
ehcache-1.2.4.jar hibernate的二级缓存如果用ehcache的时候需要此jar包
emf.jar 基于Eclipse的模型框架
wsdl4j-1.5.1.jar Axis运行所需要的组件包
activation.jar JAF框架的jar包
annotations-api.jar 使用注解所需jar
ant.jar 用于自动化调用程序完成项目的编译,打包,测试等
aopalliance-1.0.jar 支持Spring AOP
ezmorph-1.0.6.jar 使用JSON所需的jar包
FastInfoset-1.2.2.jar 使用WebService所需的jar包
freemarker-2.3.8.jar Strus2支持的一种表现层框架
geronimo-activation_1.1_spec-1.0.2.jar Apache Geronimo所带jar包,
taglibs-mailer.jar 用于发送邮件
taglibs-string.jar Apache开源组织提供标签库,用于对String的操作。

【Java基础】Jar包结构结构分析和操作具体解释

【Java基础】Jar包结构结构分析和操作具体解释

【Java基础】Jar包结构结构分析和操作具体解释作者:郭嘉邮箱:allenwells@博客:github:⼀ JAR包结构分析JAR(Java Archive FIle)Java归档⽂件,是Java标准的⽂档格式,是⼀个或多个Java字节码⽂件的打包压缩⽂件。

採⽤常见的ZIP压缩算法,和ZIP⽂件⼗分相似,能够直接解压。

JAR⽂件主要⽤来压缩和公布字节码⽂件,并且还⽤于部署和封装库、组件和插件程序。

并且能够被像编辑器和JVM这种⼯具直接使⽤。

1.1 JAR包结构JAR包的结构例如以下图所看到的:1.2 MANIFEST.MF属性从上图能够看出,JAR包⽐普通zip⽂件多了⼀个META-INF⽂件夹,该⽂件夹下包括了⼀个MANFEST.MF⽂件。

1.2.1 ⼀般属性1. Manifest-Version⽤来定义manifest⽂件的版本号,⽐如:Manifest-Version: 1.02. Created-By声明该⽂件的⽣成者,⼀般该属性是由jar命令⾏⼯具⽣成的。

⽐如:Created-By: Apache Ant 1.5.13. Signature-Version定义jar⽂件的签名版本号4. Class-Path应⽤程序或者类装载器使⽤该值来构建内部的类搜索路径1.2.2 应⽤程序相关属性1. Main-Class定义jar⽂件的⼊⼝类。

该类必须是⼀个可运⾏的类,⼀旦定义了该属性就可以通过 java -jar x.jar来运⾏该jar⽂件。

1.2.3 ⼩程序(Applet)相关属性1. Extendsion-List该属性指定了⼩程序须要的扩展信息列表。

列表中的每⼀个名字相应以下的属性2. -Extension-Name3. -Specification-Version4. -Implementation-Version5. -Implementation-Vendor-Id6. -Implementation-URL1.2.4 扩展标识属性1. Extension-Name该属性定义了jar⽂件的标识,⽐如Extension-Name: Struts Framework。

(原创)java程序打包jre以及制作安装包

(原创)java程序打包jre以及制作安装包
看到千鹤的遗w,四只眼睛的眼睛闪现在他胸前的剑伤中。在仔细检查了千鹤的身体之后,他消除了他内心的怀疑和不满。成千上万的起重机确实因血液和血液的减少而死亡,他们仍然可以看到南方和北方的旧油。这种险恶的事情真的只出现在故事书中,他真的有更多的心。对不起 ,王皓是一个臭男孩。唯一剩下的王皓似乎是钱合力的唯一后裔。有一个王小姐,一个侧面奔跑的少年和皇家僵尸。由于这个想法,四眼的领导者不如原来的主人。经过短暂的道教仪式向千鹤道场致敬,他们两人与王皓联手开始清理整个营地被王朔打破的尸体。王宇在丛林环境中点燃柴 火和烈火的顾忌在两者眼里都不恢复它,我可以保证它不会生活在黎明。头顶的皇家僵尸在黎明前发现了足够的血液,或吸收了亲人的鲜血。我们的主人和妻子过去经常在皖南地区与僵尸打交道,但他们从来没有见过这么难的僵尸。同时插入四把木剑。它不能杀死它的身体!如果你让它 从受伤中恢复过来,那么逃避,躲避和恢复,恐怕世界上会有更多的伤害!刚才Shibo说,乌兹别克斯坦逃到了Shibo,这震惊了你。他是一个忠诚的人。据推测,七十一个王子也必须在你家里。
3. 再次运行这个 jar 文件,发现已经包含了图片等文件
4.我们肯定不能让用户这样去运行我们的程序,所以必须要转成可以双击运行的方式。
四、将 jar 文件转换为可以直接双击运行的 exe 文件
1. 将 jar 文件转为 exe 文件有一个很好的软件叫做
/zh/jar2exe/free.htm 我们下载绿色版本
如图
双击 Kejian.exe,看一下效果:
16.虽然程序已经完成,但是我们不可能会给用户一个文件夹,然后让用户复制,复制好以
后双击 exe 去运行这个程序,所以接下来我们还要制作安装程序包。
五、制作程序安装包
1. 制作安装包需要的软件名字叫做 件管家搜索下载,如图:

hadoop运行java程序(jar包)并运行时动态指定参数

hadoop运行java程序(jar包)并运行时动态指定参数

hadoop运⾏java程序(jar包)并运⾏时动态指定参数1)⾸先启动hadoop2个进程,进⼊hadoop/sbin⽬录下,依次启动如下命令[root@node02 sbin]# pwd/usr/server/hadoop/hadoop-2.7.0/sbinsh start-dfs.shsh start-yarn.shjps2)通过jps查看是否正确启动,确保启动如下6个程序[root@node02 sbin]# jps10096 DataNode6952 NodeManager9962 NameNode10269 SecondaryNameNode12526 Jps6670 ResourceManager3)如果启动带有⽂件的话,将⽂件加⼊到hdfs 的 /input下,如果出现如下错误的话,[root@node02 hadoop-2.7.0]# hadoop fs -put sample.txt /input21/01/02 01:13:15 WARN util.NativeCodeLoader: Unable to load native-hadoop library for atform... using builtin-java classes where applicable在环境变量中添加如下字段[root@node02 ~]# vim /etc/profileexport HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_PREFIX}/lib/nativeexport HADOOP_OPTS="-Djava.library.path=$HADOOP_PREFIX/lib"4)进⼊到hadoop根⽬录,根据存放位置决定[root@node02 hadoop-2.7.0]# pwd/usr/server/hadoop/hadoop-2.7.05)新建hadoop hdfs ⽂件系统上的 /input ⽂件夹(⽤于存放输⼊⽂件)hadoop fs -mkdir /input6)传⼊测试⽂件,测试⽂件需要⾃⼰上传到根⽬录下(仅供测试,⽣产环境下存放到指定⽬录)[root@node02 hadoop-2.7.0]# hadoop fs -put sample.txt /input7)查看传⼊⽂件是否存在[root@node02 hadoop-2.7.0]# hadoop fs -ls /input-rw-r--r-- 1 root supergroup 529 2021-01-02 01:13 /input/sample.txt8)上传jar包到根⽬录下(⽣产环境下,放⼊指定⽬录下),测试jar包为study_demo.jar[root@node02 hadoop-2.7.0]# ll总⽤量 1968drwxr-xr-x. 2 10021 10021 4096 4⽉ 11 2015 bindrwxr-xr-x. 3 10021 10021 4096 4⽉ 11 2015 etcdrwxr-xr-x. 2 10021 10021 4096 4⽉ 11 2015 includedrwxr-xr-x. 3 10021 10021 4096 4⽉ 11 2015 libdrwxr-xr-x. 2 10021 10021 4096 4⽉ 11 2015 libexec-rw-r--r--. 1 10021 10021 15429 4⽉ 11 2015 LICENSE.txtdrwxr-xr-x. 3 root root 4096 1⽉ 2 01:36 logs-rw-r--r--. 1 10021 10021 101 4⽉ 11 2015 NOTICE.txt-rw-r--r--. 1 10021 10021 1366 4⽉ 11 2015 README.txtdrwxr-xr-x. 2 10021 10021 4096 4⽉ 11 2015 sbindrwxr-xr-x. 4 10021 10021 4096 4⽉ 11 2015 share-rw-r--r--. 1 root root 1956989 6⽉ 14 2021 study_demo.jar9)使⽤hadoop 运⾏ java jar包,Main函数⼀定要加上全限定类名hadoop jar study_demo.jar com.ncst.hadoop.MaxTemperature /input/sample.txt /output10)运⾏结果缩略图21/01/02 01:37:54 INFO mapreduce.Job: Counters: 49File System CountersFILE: Number of bytes read=61FILE: Number of bytes written=342877FILE: Number of read operations=0FILE: Number of large read operations=0FILE: Number of write operations=0HDFS: Number of bytes read=974HDFS: Number of bytes written=17HDFS: Number of read operations=9HDFS: Number of large read operations=0HDFS: Number of write operations=2Job CountersLaunched map tasks=2Launched reduce tasks=1Data-local map tasks=2Total time spent by all maps in occupied slots (ms)=14668Total time spent by all reduces in occupied slots (ms)=4352Total time spent by all map tasks (ms)=14668Total time spent by all reduce tasks (ms)=4352Total vcore-seconds taken by all map tasks=14668Total vcore-seconds taken by all reduce tasks=4352Total megabyte-seconds taken by all map tasks=15020032Total megabyte-seconds taken by all reduce tasks=4456448Map-Reduce FrameworkMap input records=5Map output records=5Map output bytes=45Map output materialized bytes=67Input split bytes=180Combine input records=0Combine output records=0Reduce input groups=2Reduce shuffle bytes=67Reduce input records=5Reduce output records=2Spilled Records=10Shuffled Maps =2Failed Shuffles=0Merged Map outputs=2GC time elapsed (ms)=525CPU time spent (ms)=2510Physical memory (bytes) snapshot=641490944Virtual memory (bytes) snapshot=6241415168Total committed heap usage (bytes)=476053504Shuffle ErrorsBAD_ID=0CONNECTION=0IO_ERROR=0WRONG_LENGTH=0WRONG_MAP=0WRONG_REDUCE=0File Input Format CountersBytes Read=794File Output Format CountersBytes Written=1710)运⾏成功后执⾏命令查看,此时多出⼀个 /output ⽂件夹[root@node02 hadoop-2.7.0]# hadoop fs -ls /drwxr-xr-x - root supergroup 0 2021-01-02 01:13 /inputdrwxr-xr-x - root supergroup 0 2021-01-02 01:37 /outputdrwx------ - root supergroup 0 2021-01-02 01:37 /tmp11)查看 /output⽂件夹的⽂件[root@node02 hadoop-2.7.0]# hadoop fs -ls /output-rw-r--r-- 1 root supergroup 0 2021-01-02 01:37 /output/_SUCCESS-rw-r--r-- 1 root supergroup 17 2021-01-02 01:37 /output/part-0000012)查看part-r-00000 ⽂件夹中的内容,我这个测试⽤例⽤来获取1949年和1950年的最⾼⽓温(华⽒度)[root@node02 hadoop-2.7.0]# hadoop fs -cat /output/part-000001949 1111950 2214)测试程序jar包和测试⽂件已上传到github上⾯,此⽬录有⾯经和我⾃⼰总结的⾯试题如有兴趣的同学也可以查阅我的秒杀系统以上就是hadoop如何运⾏java程序(jar包)运⾏时动态指定参数的详细内容,更多关于hadoop运⾏java程序的资料请关注其它相关⽂章!。

Springboot项目java-jar启动jar包参数详解

Springboot项目java-jar启动jar包参数详解

Springboot项⽬java-jar启动jar包参数详解命令实例:nohup java -Xms500m -Xmx500m -Xmn250m -Xss256k -server -XX:+HeapDumpOnOutOfMemoryError -jar $JAR_PATH/test-0.0.1-SNAPSHOT.jar --spring.profiles.active=daily -verbose:class &说明:--spring.profiles.active=daily,这个可以在spring-boot启动中指定系统变量,多环境(测试、预发、线上配置)的区分在排查jar包冲突时,可以指定启动的-verbose:class 打印出启动的应⽤实际加载类的路径,来排查来源。

jvm堆设值: -Xms500m -Xmx500m -Xmn250m -Xss256knohup 不挂断地运⾏命令;& 在后台运⾏,⼀般两个⼀起⽤。

eg:nohup command &-server:服务器模式,在多个CPU时性能佳,启动慢但性能好,能合理管理内存。

-XX:+HeapDumpOnOutOfMemoryError:在堆溢出时保存快照可以⽤ java -X命令在终端查询所有的java堆参数:-Xmixed 混合模式执⾏ (默认)-Xint 仅解释模式执⾏-Xbootclasspath:<⽤ : 分隔的⽬录和 zip/jar ⽂件>设置搜索路径以引导类和资源-Xbootclasspath/a:<⽤ : 分隔的⽬录和 zip/jar ⽂件>附加在引导类路径末尾-Xbootclasspath/p:<⽤ : 分隔的⽬录和 zip/jar ⽂件>置于引导类路径之前-Xdiag 显⽰附加诊断消息-Xnoclassgc 禁⽤类垃圾收集-Xincgc 启⽤增量垃圾收集-Xloggc:<file> 将 GC 状态记录在⽂件中 (带时间戳)-Xbatch 禁⽤后台编译-Xms<size> 设置初始 Java 堆⼤⼩-Xmx<size> 设置最⼤ Java 堆⼤⼩-Xss<size> 设置 Java 线程堆栈⼤⼩-Xprof 输出 cpu 配置⽂件数据-Xfuture 启⽤最严格的检查, 预期将来的默认值-Xrs 减少 Java/VM 对操作系统信号的使⽤ (请参阅⽂档)-Xcheck:jni 对 JNI 函数执⾏其他检查-Xshare:off 不尝试使⽤共享类数据-Xshare:auto 在可能的情况下使⽤共享类数据 (默认)-Xshare:on 要求使⽤共享类数据, 否则将失败。

(完整版)java基础jar包程序

(完整版)java基础jar包程序

包:java中的包就相当于windows文件夹。

包的作用:1. 解决类名重复产生冲突的问题。

2. 便于软件版本的发布。

定义包的格式:package 包名;包名命名规范:包名全部小写。

包语句要注意的事项:1. package语句必须位于java文件中中第一个语句。

2. 如果一个类加上了包语句,那么该类的完整类名就是: 包名.类名3. 一个java文件只能有一个包语句。

问题:每次编译的时候都需要自己创建一个文件夹,把对应的class文件存储到文件夹中。

烦!!!javac -d 指定类文件的存放路径 java源文件*/package aa;class Demo1{public static void main(String[] args){System.out.println("这个是Demo1的main方法...");}}package bb;class Demo1{public static void main(String[] args){System.out.println("这个是Demo2main方法..");}}/*有了包之后类与类之间的访问:问题:有了包之后类与类之间的访问每次都必须要写上包名!烦!!!!解决方案: sum提供导包语句让我们解决该问题。

导包语句作用:简化书写。

(误区:把一个类导入到内存中)导包语句的格式:import 包名.类名; (导入xxx包中某个类)导包语句要注意的细节:1. 一个java文件中可以出现多句导包语句。

2. "*"是导包语句的通配符。

可以匹配任何的类名。

3. import aa.*; 是不会作用于aa包下面的子包的。

推荐使用:import 包名.类名; 因为使用*通配符会导致结构不清晰。

什么时候使用import语句:1. 相互访问的两个类不是在同一个包下面,这时候就需要使用到导包语句。

2. ng 是默认导入的,不需要我们自己导入。

idea打包java程序(包含依赖的所有jar包)

idea打包java程序(包含依赖的所有jar包)

idea打包java程序(包含依赖的所有jar包)Intellij Idea打包Java项⽬
打开模块设置
如下图所⽰,选中需要打包的模块,右键点击,即会出现如下图所⽰的内容,点击Open Module Settings。

创建Artifacts
配置Jar包信息
注意配置输出路径 Output directory;
移动依赖Jar包到指定⽂件夹中并配置路径
如下图所⽰,将项⽬依赖的Mysql驱动包移动到library⽂件夹中。

⽅法是只需要在上右键点击创建⽂件夹,然后将第三⽅的Jar包拖动进⼊此⽂件夹即可。

并且点击图中马赛克部分的那个Jar⽂件在下⽅三个输⼊框中按照如下图配置到时模块⽣成的Jar包中的主类(包含Main⽅法的类)以及所依赖的第三⽅类库的地址。

在配置依赖Jar的路径时,需要特别注意,如下图所⽰,在指定的jar⽂件之前增加“library\”即刚才存放第三⽅Jar⽂件的新建⽬录的名称,如果在Linux中的IDE上操作,路径应改为“library/”;
点击OK,退出配置部分。

⽣成⾃⼰的Jar⽂件
在Intellij Idea的菜单栏中依次选择“Build -> Build Artifacts”选项,最后选择Rebuild操作,即可在上述指定的输出⽬录中发现本次⽣成的Jar⽂件。

运⾏
在命令⾏中跳转到输出⽬录中,以“java -jar ⽣成的jar包名称.jar”即可实现运⾏。

到此这篇关于idea打包java程序(包含依赖的所有jar包)的⽂章就介绍到这了,更多相关idea打包java程序内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。

Javajar包、程序运行参数

Javajar包、程序运行参数

Javajar包、程序运⾏参数jar包JAR⽂件全称 Java Archive File,意为Java档案⽂件。

JAR⽂件是⼀种压缩⽂件,也被称为JAR包。

JDK的bin⽬录下有个jar.exe,负责jar包的相关操作。

⽣成.jar包:1、File->Project Structure->Artifacts-> + ->JAR->Empty->2、设置Jar⽂件名、Jar⽂件所在⽬录-将右边需要打包到jar包的内容拖到左边的项⽬中(compile output是必选的,第三⽅的jar包也要选)->3、[单击左边的.jar⽬录,下⽅会出现对应选项->Create Manifest->选择MANIFEST.MF⽂件的⽣成⽬录(项⽬下的任何⽬录均可,通常选项⽬名)->选择主类(也可以在.MF中⼿动添加⼀⾏:Main-Class: 包名.主类名)->]4、ok->Build->Build Artifacts->Build。

第三步是⽣成可执⾏的.jar包(带主类)。

缺省第三步,只⽣成普通的.jar包(不可执⾏)在命令提⽰符下执⾏可执⾏的.jar⽂件:1、切换到jdk所在盘符 d: 不能加\2、切换到java.exe所在⽬录 cd D:\jdk-12.0.1\bin如果path系统环境变量添加了jdk的bin⽬录,则可跳过前两步3、运⾏可执⾏的jar包 java -jar C:\Users\chy\Desktop\untitled\out\artifacts\unnamed\unnamed.jar程序运⾏参数Java主函数形式:public static void main(String[] args){......}也就是说可以向Java程序传递⼀个String[]。

1、在IDEA中debug、run时向JVM传递参数:Edit Configurations->Program arguments2、在命令提⽰符下执⾏主类:java 主类名字符串1 字符串2 字符串3......3、在命令提⽰符下执⾏可执⾏的.jar包:java -jar C:\Users\chy\Desktop\untitled\out\artifacts\unnamed\unnamed.jar 字符串1 字符串2 字符串3.....字符串1 字符串2 字符串3......以空格分开,字符串不⽤加引号。

java -jar 执行 方法

java -jar 执行 方法

Java是一种广泛应用的编程语言,其灵活性和强大的功能使其在软件开发领域得到了广泛的运用。

在Java编程中,我们常常会用到java -jar命令来执行一些特定的方法或程序。

本文将从执行方法的基本语法、常见问题及解决方法等方面进行介绍,以帮助读者更好地理解和应用java -jar命令。

一、java -jar执行方法的基本语法在Java编程中,我们可以使用java -jar命令来执行一个打包成jar包的程序或方法。

其基本语法如下:java -jar <jar文件名> [参数]其中,<jar文件名>表示要执行的jar包文件名,参数是可选的,可以在执行方法时传入给程序。

在执行java -jar命令时,需要在命令行中切换到jar包所在的目录,然后输入以上命令即可执行指定的程序或方法。

二、java -jar执行方法的常见问题及解决方法在使用java -jar命令执行方法时,有时会遇到一些常见的问题,下面将介绍一些常见问题及其解决方法:1. 无法找到或加载主类当执行java -jar命令时,如果出现"无法找到或加载主类"的错误提示,这通常是由于指定的jar包中的MANIFEST文件中未正确指定主类名所致。

解决方法是打开MANIFEST文件并检查M本人n-Class项是否正确指定了主类名,确保没有拼写错误。

2. 缺少依赖库有时在执行java -jar命令时,会出现"找不到类xxx"的错误提示,这通常是由于jar包所需的依赖库未正确引入或缺失所致。

解决方法是在编译jar包时将所需的依赖库一起打包进去,或者将依赖库放在与jar包相同的目录下。

3. 参数传递错误当执行java -jar命令需要传递参数给程序时,有时会因参数传递错误而导致程序出现异常或错误。

解决方法是检查传递的参数是否符合程序要求,并且要注意参数的顺序和格式是否正确。

三、java -jar执行方法的注意事项在使用java -jar命令执行方法时,还需要注意一些事项,以确保程序能够正常执行:1. 确保jar包正确打包在执行java -jar命令时,需要确保jar包已经正确打包,并且MANIFEST文件中正确指定了主类名和依赖库。

利用 java发布服务(jar包)

利用 java发布服务(jar包)

利用 JavaService 发布服务(jar包)前言:1.先了解什么叫做Windows服务?Microsoft Windows 服务(即,以前的NT 服务)使您能够创建在它们自己的Windows 会话中可长时间运行的可执行应用程序。

这些服务可以在计算机启动时自动启动,可以暂停和重新启动而且不显示任何用户界面。

这使服务非常适合在服务器上使用,或任何时候,为了不影响在同一台计算机上工作的其他用户,需要长时间运行功能时使用。

还可以在不同于登录用户的特定用户帐户或默认计算机帐户的安全上下文中运行服务。

2.再来解释下jar可执行文件JAR又称为java归档文件,是与平台无关的文件格式。

以流行的ZIP 文件格式为基础。

与ZIP 文件不同的是,JAR 文件不仅用于压缩和发布,而且还用于部署和封装库、组件和插件程序,并可被像编译器和JVM 这样的工具直接使用。

jar在java中作为一种项目的发布形式比较普遍,往往为了容易管理更需要作为一种系统服务发布——起码服务器重启了不用人工去重新打开你所要运行的jar 文件。

一、利用JavaService 发布服务(jar包)这里简单的介绍下怎么将jar发布到winNT平台服务上,有以下几个准备工作和注意的问题。

首先:我们需要哪些东西?1 下载JavaService//project/showfiles.php?group_id=137&release_id=1560获得windows的zip压缩版,文件名形如:JavaService-x.x.xx.zip,其中x.x.xx为版本号,当前版本为JavaService-2.0.10.zip,请使用最新版。

32位的操作系统和64位的需要不同的javaService.exe。

将JavaService-2.0.10.zip解压缩到c:\JavaService目录下。

(其实任意目录下都可以)3 编写java类/应用程序jar文件保存为任意目录,如:"d:\JavaTest\Test.java",并编译为Test.class;4 注册Windows服务进入c:\JavaService目录,执行如下命令:其中%JAVA_HOME% = D:\MyDrivers\jdk7JavaService.exe -install MyService "%JAVA_HOME%"\jre\bin\server\jvm.dll -Djava.class.path="%JAVA_HOME%"\lib\tools.jar;d:\JavaTest -start Test-install 开关后面的参数是要添加的服务名;-start 开关后面的参数是要启动的java类名;-Djava.class.path指定你所需要运行的jar包,以及它所依赖的第三方包;后面参数中的d:\javaTest是我的Test.class所在路径,实际应用中应该添加你的CLASSPATH。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
System.out.println("请输入密码:");
String password = scanner.next();
}else if(option.equals("B")){
}
}
}
}
package myutil;
public class MyArrays
{
public static String toString(int[] arr){
分析:
1.确定新数组的长度。原数组的长度-重复元素个数
*/
import java.util.*;
class Demo12 {
public static void main(String[] args)
{
int[] arr = {11,2, 4, 2, 10, 11};
arr = clearRepeat(arr);
模板模式的步骤:
1.先写出解决该类事情其中的一件的解决方案。
2.分析代码,把会发生变化的代码抽取出来独立成一个方法。把该方法描述成一个抽象的方法。
3.使用final修饰模板方法,防止别人重写你的模板方法。
*/
abstract class MyRuntime{
public final void getTime(){
public class Demo3
{
/*
static{
System.out.println("这个是Dmeo3的静态代码块...");
}
*/
public void print(){
System.out.println("这个是Dmeo3的print方法...");
}
}
package bb;
import aa.Demo3;
/*
包:
java中的包就相当于windows文件夹。
包的作用:
1.解决类名重复产生冲突的问题。
2.便于软件版本的发布。
定义包的格式:
package包名;
包名命名规范:包名全部小写。
包语句要注意的事项:
1. package语句必须位于java文件中中第一个语句。
2.如果一个类加上了包语句,那么该类的完整类名就是:包名.类名
不同包true false false false
注意:在不同包下面只有public与protected可以访问,而且protected必须是在继承关系下才能够访问。
*/
package aa;
public class Demo7
{
protected int i =10;
}
package bb;
import aa.Demo7;
3.一个java文件只能有一个包语句。
问题:每次编译的时候都需要自己创建一个文件夹,把对应的class文件存储到文件夹中。烦!!!
javac -d指定类文件的存放路径java源文件
*/
package aa;
class Demo1
{
public static void main(String[] args)
String userName;
String password;
}
class Demo13
{
public static void main(String[] args)
{
Scanner scanner = new Scanner(System.in);
User[] users = new User[10];
}
public abstract void code();
}
class Demo11 extends MyRuntime
{
public static void main(String[] args)
{
Demo11 d = new Demo11();
d.getTime();
}
//code方法内部就写要计算运行时间的代码;
打jar包要注意的事项:
1.一个程序打完了jar之后必须要在清单文件上指定入口类:格式Main-Class:包名.类名
2. jar包双击运行仅对于图形化界面的程序起作用,对控制台的程序不起作用。
jar文件的作用:
1.方便用户快速运行一个项目。
2.提供工具类以jar包的形式给别人使用。
如果使用jar包里面的类必须要先设置classpath路径。
String result = "";
for(int i = 0 ; i < arr.length ; i++){
if(i==0){
result +="["+ arr[i]+",";
}else if(i==arr.length-1){
result += arr[i]+"]";
}else{
result += arr[i]+",";
d.print();
/*
Demo5 d2 = new Demo5();
d2.test();
*/
}
}
package aa;
public class Demo5
{
static{
System.out.println("这个是Dmeo5的静态代码块...");
}
public void test(){
System.out.println("这个是Demo5的test方法...");
long startTime = System.currentTimeMillis();//记录开始的时间
code();
long endTime = System.currentTimeMillis(); //记录结束的时间.
System.out.println("运行时间:"+ (endTime-startTime));
for(int j = i+1 ; j<arr.length ; j++){
if(arr[i]==arr[j]){
count++;
break;
}
}
}
//新数组的长度
int newLength = arr.length - count;
//创建一个新的数组
int[] newArr = new int[newLength];
}
}
return result;
}
}
{
System.out.println("这个是Demo1的main方法...");
}
}
package bb;
class Demo1
{
public static void main(String[] args)
{
System.out.println("这个是Demo2main方法..");
}
}
/*
有了包之后类与类之间的访问:
{
int[] arr = {5,1,3,6};
System.out.println(MyArrays.toString(arr));
}
}
/*
模板模式:解决某类事情的步骤有些是固定的,有些是会发生变化的,那么这时候我们可以
为这类事情提供一个模板代码,从而提高效率。
需求;编写一个计算程序运行时间的模板。
System.out.println("清除重复元素的数组:"+ Arrays.toString(arr));
}
public static int[] clearRepeat(int[] arr){
//先计算出重复元素的格式:
int count = 0; //记录重复元素的个数
for(int i = 0 ; i < arr.length-1 ; i++){
int index = 0 ;//新数组的索引值
//遍历旧数组
for(int i = 0 ; i< arr.length ; i++){
int temp = arr[i]; //旧数组中的元素
boolean flag = false; //默认不是重复元素
//拿着旧数组的元素与新数组的每个元素比较一次。
}
}
/*
权限修饰符:权限修饰符就是控制被修饰的成员的范围可见性。
public(公共) protected(受保护) default(缺省) private (大到小)
同一个类true true true true
同一个包true true true false
子父类true true false false
frame.setSize(400,500);
frame.setVisible(true); //设置窗口可见。
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
import myutil.MyArrays;
class Demo10
{
public static void main(String[] args)
class Demo8
{
public static void main(String[] args)
{
Demo7 d = new Demo7();
System.out.println("i="+d.i);
相关文档
最新文档