`

Eclipse 中的 jar file 和 runnable jar file的区别。怎么打jar包 jar怎么运行

    博客分类:
  • IDE
 
阅读更多

    java最难学的就是角落的东东了,不愧叫做java平台。搜索了一把总算明白了。 

     直接运行 .class的方法     java  -cp .  com.network.Chat  , 不用加.class后缀 

    从eclipse中export 的jar file,仅仅是把.class打包了。所以执行这种jar file需要用 java -cp .;ch04.jar com.thnkjava.ch04, 如果你还应用到另外的lib库,你必须在cp里说明,也就是  java -cp .;ch04.jar;lib01.jar;lib02.jar com.thnkjava.ch04 来执行。事实上可以发现ch04.jar也在cp里面,说明ch04.jar就是lib库,最后的参数指明了要被执行的类名。

    如果从eclipse里export出的是 runnable jar file,那么个执行这个jar包的时候是不需要指明哪个类的,直接这样执行 java -jar ch04.jar。原因就是jar包中的MANIFEST.MF内容不同。 runnable jar包中指明哪个类先执行,所以你可以用 java -jar ch04.jar来执行你想要执行的代码,而不必指明具体哪个类。这个你可以打开 jar包查看MANIFEST.MF的区别,一目了然。

     生成runnable jar file时,有两个选项,Extract required libraries into generated JAR 和 package equired libraries into generated JAR。 前者是把你用到的.class 文件提取出来,后者则是把你所需要的所有jar包都打进一个包里。两者的MANIFEST.MF文件内容也有所不同,这应该是eclipse造成的,IDE 做了自己的事情,具体就不研究了。

http://docs.oracle.com/javase/tutorial/deployment/jar/appman.html

 

怎么打jar包 jar怎么运行

 

一、怎么打jar包

第一步:选中要打jar包的工程

第二步:鼠标右击,选择Export...

第三步:选择java中的Runnable JAR file(如图)



点击“Next” 

第四步:(1)在Launch configuration:选择要打jar包的mian所在的类名;(如图)


            (2)在Export destination:选择要存放jar的名称和地址(如图)

 

      (3)如果要打的jar包需要调用别的jar包 请选择Library handling:中copy required libraries into a sub-folder next to the generated JAR(如图)



 第五步:点击 “Finish”

二、运行 jar 方法

(1)cmd

(2)java -jar 盘:\文件名\XXXX.jar

 

 

分享到:   
评论
10 楼  liubiaocai   2012-03-02  
感谢LZ,终于搞定了eclipse导出jar,并且在dos里面可以运行了
9 楼  lk617238688   2011-01-25  
8 楼  lk617238688   2011-01-25  
/** 
* 遍历目录 
* 
* @param directoryPath 
*/ 
public static void read(String txtPath, String xmlPath) { 
File dir = new File(txtPath); 
File[] files = dir.listFiles(); 
if (files == null) { 
return; 
} else { 
for (int i = 0; i < files.length; i++) { 
if (files[i].isDirectory()) { 
read(files[i].getAbsolutePath(), xmlPath); 
} else { 
// read file 
readfile2Xml(files[i].getAbsolutePath(), xmlPath); 
} 
} 
} 
} 

/** 
* start() 
* 
* @param txtPath 
* @param xmlPath 
* @throws FileNotFoundException 
* @throws IOException 
*/ 
private static void start(String txtPath, String xmlPath) 
throws FileNotFoundException, IOException { 
// 创建XML 
bulidXmlDoc(xmlPath); 
// 遍历 
read(txtPath, xmlPath); 
} 

public static void main(String[] args) throws FileNotFoundException, 
IOException { 
// start(args[0], args[1]); 
start("F:\\works\\updown\\functions", 
"F:\\works\\Java\\workspace\\txtfmtxml\\txtfmtxml.xml"); 
} 
}
7 楼  lk617238688   2011-01-25  
/** 
* 读取文件 每行生成一个Element 
* 
* @param file 
*/ 
private static void readfile2Xml(String file, String xmlPath) { 
String fileName = file.substring(file.lastIndexOf("\\") + 1, file 
.lastIndexOf(".")); 
String[] func = null; 
String funcName = null; 
String funcSize = null; 
InputStreamReader read = null; 
BufferedReader reader = null; 
counts = 0; 
sizes = 0; 
try { 
// 添加summary 
addSummary(fileName, xmlPath); 
// 添加detail 
addElement(fileName, null, null, xmlPath); 

read = new InputStreamReader(new FileInputStream(file), "GBK"); 
reader = new BufferedReader(read); 
String line = null; 
while ((line = reader.readLine()) != null) { 
if ("".equals(line)) { 
continue; 
} 
counts++; 
func = line.split(" "); 
funcName = null; 
funcSize = null; 
for (String str : func) { 
if (str.length() != 0) { 
if (funcName == null) { 
funcName = str; 
} else { 
funcSize = str; 
break; 
} 
} 
} 
if (funcSize == null) { 
funcSize = "0"; 
} 
sizes += Integer.parseInt(funcSize); 
// 添加func 
addElement(fileName, funcName, funcSize, xmlPath); 
} 
// 修改count 
editCount("//summary/module[@name='" + fileName + "']/count", null, 
counts, xmlPath); 
editCount("//summary/module[@name='" + fileName + "']/size", null, 
sizes, xmlPath); 
editCount("//detail/module[@name='" + fileName + "']", "count", 
counts, xmlPath); 
editCount("//detail/module[@name='" + fileName + "']", "size", 
sizes, xmlPath); 
reader.close(); 
read.close(); 
} catch (Exception e) { 
e.printStackTrace(); 
try { 
reader.close(); 
read.close(); 
} catch (IOException e1) { 
} 
} 

}
6 楼  lk617238688   2011-01-25  
/** 
* 添加Summary 
* 
* @param moduleName 
* @param countTotal 
* @throws IOException 
* @throws JDOMException 
*/ 
private static void addSummary(String moduleName, String xmlPath) 
throws JDOMException, IOException { 

SAXBuilder build = new SAXBuilder(); 
// 获得文档对象 
Document doc = build.build(xmlPath); 

XPath xpath = XPath.newInstance("//summary"); 
List list = xpath.selectNodes(doc); 

Element summary = (Element) list.get(0); 
Element module = new Element("module"); 

module.setAttribute("name", moduleName); 
Element count = new Element("count"); 
count.setText(counts.toString()); 
Element size = new Element("size"); 
size.setText(sizes.toString()); 

module.addContent(count); 
module.addContent(size); 
summary.addContent(module); 

// 文件处理 
output(doc, xmlPath); 

} 

/** 
* 修改counts、sizes 
* @param Xpath 
* @param attribute 
* @param total 
* @param xmlPath 
* @throws FileNotFoundException 
* @throws IOException 
* @throws JDOMException 
*/ 
private static void editCount(String Xpath, String attribute, 
Integer total, String xmlPath) throws FileNotFoundException, 
IOException, JDOMException { 

SAXBuilder build = new SAXBuilder(); 
// 获得文档对象 
Document doc = build.build(xmlPath); 
// 获得根节点 
Element element = null; 
// 添加子元素func 
XPath xpath = XPath.newInstance(Xpath); 
List list = xpath.selectNodes(doc); 
if (list.size() == 1) { 
element = (Element) list.get(0); 
if (Xpath.contains("summary")) { 
element.setText(total.toString()); 
} else { 
element.setAttribute(attribute, total.toString()); 
} 
} 
// 文件处理 
output(doc, xmlPath); 
}
5 楼  lk617238688   2011-01-25  
/** 
* 文件处理 
* 
* @param doc 
* @throws IOException 
* @throws FileNotFoundException 
*/ 
private static void output(Document doc, String xmlPath) 
throws FileNotFoundException, IOException { 
// 格式化并输出 
Format format = Format.getPrettyFormat(); 
XMLOutputter out = new XMLOutputter(format); 
out.output(doc, new FileOutputStream(xmlPath)); 
} 

/** 
* 添加detail 
* 
* @param line 
* @throws IOException 
* @throws JDOMException 
*/ 
public static void addElement(String moduleName, String funcName, 
String funcSize, String xmlPath) throws JDOMException, IOException { 
SAXBuilder build = new SAXBuilder(); 
// 获得文档对象 
Document doc = build.build(xmlPath); 
XPath xpdetail = XPath.newInstance("//detail"); 
List listDetail = xpdetail.selectNodes(doc); 
Element detail = (Element) listDetail.get(0); 
Element module = null; 
if (funcName == null) { 
// 添加父元素 module 
module = new Element("module"); 
module.setAttribute("name", moduleName); 
module.setAttribute("count", counts.toString()); 
module.setAttribute("size", sizes.toString()); 
detail.addContent(module); 
} else { 
// 添加子元素func 
XPath xpmodule = XPath.newInstance("//detail/module[@name='" 
+ moduleName + "']"); 
List list = xpmodule.selectNodes(doc); 
if (list.size() == 1) { 
module = (Element) list.get(0); 

Element func = new Element("func"); 
func.setAttribute("name", funcName); 
func.setAttribute("size", funcSize); 
module.addContent(func); 
} 
} 
// 文件处理 
output(doc, xmlPath); 
}
4 楼  lk617238688   2011-01-25  
public class TxtFmtXml { 
// 模块包含的函数个数 
private static Integer counts = 0; 
// 模块所包含函数的大小 
private static Integer sizes = 0; 

/** 
* 创建XML 
* 
* @throws FileNotFoundException 
* @throws IOException 
*/ 
public static void bulidXmlDoc(String xmlPath) 
throws FileNotFoundException, IOException { 
// 创建根节点 
Element root = new Element("root"); 
Element elementSummary = new Element("summary"); 
Element elementDetail = new Element("detail"); 

root.addContent(elementSummary); 
root.addContent(elementDetail); 
// 根节点添加到文档中 
Document doc = new Document(root); 

// 文件处理 
output(doc, xmlPath); 
}
3 楼  lk617238688   2011-01-25  
package com.huawei.txtfmtxml; 

import java.io.BufferedReader; 
import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.util.List; 

import org.jdom.Document; 
import org.jdom.Element; 
import org.jdom.JDOMException; 
import org.jdom.input.SAXBuilder; 
import org.jdom.output.Format; 
import org.jdom.output.XMLOutputter; 
import org.jdom.xpath.XPath; 
/** 
* 
*请提供jaxen.jar(XPath要用到)、jdom.jar 
**/
分享到:
评论

相关推荐

    Eclipse打包成JAR包读取外部JAR包和外部配置文件

    在Java开发过程中,Eclipse是一款常用的集成开发环境(IDE),它提供...通过以上步骤,你就可以成功地在Eclipse中打包项目,并实现对外部JAR包和配置文件的正确引用。这不仅有助于项目部署,也有利于后续的维护和升级。

    解决eclipse导出的jar文件打不开问题

    ### 解决Eclipse导出的JAR文件打不开问题 #### 概述 在使用Eclipse进行Java开发的过程中,有时会遇到导出的JAR文件无法正常运行的问题。这类问题通常涉及多个方面,包括但不限于主类的选择、依赖库的打包方式以及...

    使用eclipse打jar包 可执行的jar

    你需要选择"Java" -&gt; "Runnable JAR file",这将创建一个可以直接运行的JAR文件,因为它包含了运行时所需的类路径和主类信息。 4. **配置导出设置**: 在"Runnable JAR file"向导的下一个页面,你需要指定以下内容...

    MyEclipse或Eclipse打jar包插件+详细的使用教程

    本教程将详细介绍如何在MyEclipse和Eclipse中使用插件进行JAR打包。 一、MyEclipse打JAR包 1. **创建Java工程**:首先确保你有一个完整的Java工程,包含了所有源代码、资源文件和依赖库。 2. **配置工程属性**:...

    Eclipse打包工具FATJAR

    2. **创建Fat JAR**:安装完成后,右键点击项目 -&gt; Export -&gt; Runnable JAR file,在弹出的向导中选择"Package required libraries into generated JAR"选项,这将把所有依赖的库打包进JAR。 3. **配置Main-Class**...

    Eclipse 导出可执行Java工程/可执行Jar文件(包含第三方Jar包)

    在Eclipse中,将Java工程打包成可执行的JAR文件,特别是包含第三方库的JAR包,是一个常见的需求。本教程将详细介绍如何使用Eclipse的"Runnable JAR file"选项来完成这一过程。 首先,确保你的Eclipse版本支持这一...

    eclipse制作jar工具

    3. **使用Fat Jar插件**:在Eclipse的"Export"菜单中,选择"Java" -&gt; "Fat JAR: Runnable JAR file"。在这个向导中,你可以选择要打包的主类(即程序入口点),以及要包含的库。Fat Jar插件会自动处理所有依赖,并将...

    Eclipse的AWT项目打包成jar,编写bat批处理文件运行

    通过以上步骤,不仅可以将Eclipse中的AWT或SWT项目成功打包成JAR文件,还可以通过批处理文件实现自动化运行,极大地提高了开发效率和用户体验。在实际操作中,可能需要根据具体项目的需求调整MANIFEST.MF文件的配置...

    eclipse jar 1

    "eclipse jar 1"这个标题可能指的是使用Eclipse IDE创建或管理的第一个jar文件,或者是在Eclipse中关于打包和运行jar文件的一个教程或指南。 【描述】:“eclipse jar 1eclipse jar 1eclipse jar 1eclipse jar 1...

    将多个jar包合并为一个jar包

    - 在Eclipse中,可以通过`Export` -&gt; `Java` -&gt; `Runnable JAR file`,然后选择`Package required libraries into generated JAR`选项来合并依赖。 - IntelliJ IDEA也有类似的功能,可以在`Artifacts`设置中配置。...

    eclipse导出可运行的jar文件

    - **兼容性问题**:考虑目标机器的操作系统和 JDK 版本,确保导出的 jar 文件能在目标环境中顺利运行。 #### 总结 通过以上步骤,你可以在 Eclipse 中成功地将 Java 项目导出为一个可运行的 jar 文件,其中不仅...

    fat jar,eclipse打包插件

    提供的文档"如何使用Fat Jar在Eclipse中制作jar文件包.doc"应该详细阐述了这些步骤,并可能包含了一些常见问题和解决策略。而"plugins"目录可能包含了插件的安装文件或相关库,供安装或参考使用。 总的来说,fat ...

    eclipse/myeclipse打包插件fatjar.zip(含说明文档)

    "fatjar"插件就是这样一个工具,它允许开发者将项目及其依赖的第三方库(jar包)整合到一个单一的JAR文件中,从而创建出"胖JAR"。这样的JAR文件可以在任何具有Java运行环境的机器上直接运行,无需额外配置类路径。 ...

    java打包jar方案的优缺点分析及解决方案

    3. **直接用MyEclipse的Export中Runnable JAR file导出** Runnable JAR文件选项可以创建一个可以直接运行的JAR,它会自动处理MANIFEST.MF文件中的`Class-Path`设置,指明外部库的位置。这种方法的优点是能直接运行...

    最方便的Eclipse打包JAR插件

    2. **配置项目**:在Eclipse中打开你的Java项目,右键点击项目,选择“Export” &gt; “Fat Jar” &gt; “Export Runnable JAR file”。 3. **选择主类**:在弹出的向导窗口中,你需要指定项目的主类,即程序启动时要执行...

    Java打Jar包方法和实例

    Java打Jar包是Java开发过程中常见的一项操作,它将多个类文件、资源文件等打包成一个可执行的JAR(Java Archive)文件,方便分发、部署和运行。本篇文章将详细阐述Java打Jar包的方法,并通过实例进行演示。 1. **...

    java工程脱离eclipse运行

    Java工程脱离Eclipse运行是指将Java工程从Eclipse中独立出来,生成一个可以独立运行的JAR包。下面是实现这一过程的详细步骤: 1. 选择要导出的项目,右键点击选择“导出” 2. 在弹出的框中选中“jar 文件” 3. 选择...

    java打包为jar

    3. 在弹出的窗口中,展开“Java”选项,然后选择“Runnable JAR file”(可运行的JAR文件),点击“Next”(下一步)。 4. 在“Launch configuration”(启动配置)中,选择你要作为主类运行的程序,即包含`public ...

    将class文件打包成jar文件

    3. **选择导出类型**:在弹出的对话框中,选择`Java` -&gt; `Runnable JAR file`。 4. **配置导出设置**:在下一步中,你可以选择是否将项目依赖项(例如库和其他jar文件)包含在最终的jar文件中,以及是否添加...

Global site tag (gtag.js) - Google Analytics