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
评论
* 遍历目录
*
* @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");
}
}
* 读取文件 每行生成一个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) {
}
}
}
* 添加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);
}
* 文件处理
*
* @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);
}
// 模块包含的函数个数
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);
}
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
**/
相关推荐
在Java开发过程中,Eclipse是一款常用的集成开发环境(IDE),它提供...通过以上步骤,你就可以成功地在Eclipse中打包项目,并实现对外部JAR包和配置文件的正确引用。这不仅有助于项目部署,也有利于后续的维护和升级。
### 解决Eclipse导出的JAR文件打不开问题 #### 概述 在使用Eclipse进行Java开发的过程中,有时会遇到导出的JAR文件无法正常运行的问题。这类问题通常涉及多个方面,包括但不限于主类的选择、依赖库的打包方式以及...
你需要选择"Java" -> "Runnable JAR file",这将创建一个可以直接运行的JAR文件,因为它包含了运行时所需的类路径和主类信息。 4. **配置导出设置**: 在"Runnable JAR file"向导的下一个页面,你需要指定以下内容...
本教程将详细介绍如何在MyEclipse和Eclipse中使用插件进行JAR打包。 一、MyEclipse打JAR包 1. **创建Java工程**:首先确保你有一个完整的Java工程,包含了所有源代码、资源文件和依赖库。 2. **配置工程属性**:...
2. **创建Fat JAR**:安装完成后,右键点击项目 -> Export -> Runnable JAR file,在弹出的向导中选择"Package required libraries into generated JAR"选项,这将把所有依赖的库打包进JAR。 3. **配置Main-Class**...
在Eclipse中,将Java工程打包成可执行的JAR文件,特别是包含第三方库的JAR包,是一个常见的需求。本教程将详细介绍如何使用Eclipse的"Runnable JAR file"选项来完成这一过程。 首先,确保你的Eclipse版本支持这一...
3. **使用Fat Jar插件**:在Eclipse的"Export"菜单中,选择"Java" -> "Fat JAR: Runnable JAR file"。在这个向导中,你可以选择要打包的主类(即程序入口点),以及要包含的库。Fat Jar插件会自动处理所有依赖,并将...
通过以上步骤,不仅可以将Eclipse中的AWT或SWT项目成功打包成JAR文件,还可以通过批处理文件实现自动化运行,极大地提高了开发效率和用户体验。在实际操作中,可能需要根据具体项目的需求调整MANIFEST.MF文件的配置...
"eclipse jar 1"这个标题可能指的是使用Eclipse IDE创建或管理的第一个jar文件,或者是在Eclipse中关于打包和运行jar文件的一个教程或指南。 【描述】:“eclipse jar 1eclipse jar 1eclipse jar 1eclipse jar 1...
- 在Eclipse中,可以通过`Export` -> `Java` -> `Runnable JAR file`,然后选择`Package required libraries into generated JAR`选项来合并依赖。 - IntelliJ IDEA也有类似的功能,可以在`Artifacts`设置中配置。...
- **兼容性问题**:考虑目标机器的操作系统和 JDK 版本,确保导出的 jar 文件能在目标环境中顺利运行。 #### 总结 通过以上步骤,你可以在 Eclipse 中成功地将 Java 项目导出为一个可运行的 jar 文件,其中不仅...
提供的文档"如何使用Fat Jar在Eclipse中制作jar文件包.doc"应该详细阐述了这些步骤,并可能包含了一些常见问题和解决策略。而"plugins"目录可能包含了插件的安装文件或相关库,供安装或参考使用。 总的来说,fat ...
"fatjar"插件就是这样一个工具,它允许开发者将项目及其依赖的第三方库(jar包)整合到一个单一的JAR文件中,从而创建出"胖JAR"。这样的JAR文件可以在任何具有Java运行环境的机器上直接运行,无需额外配置类路径。 ...
3. **直接用MyEclipse的Export中Runnable JAR file导出** Runnable JAR文件选项可以创建一个可以直接运行的JAR,它会自动处理MANIFEST.MF文件中的`Class-Path`设置,指明外部库的位置。这种方法的优点是能直接运行...
2. **配置项目**:在Eclipse中打开你的Java项目,右键点击项目,选择“Export” > “Fat Jar” > “Export Runnable JAR file”。 3. **选择主类**:在弹出的向导窗口中,你需要指定项目的主类,即程序启动时要执行...
Java打Jar包是Java开发过程中常见的一项操作,它将多个类文件、资源文件等打包成一个可执行的JAR(Java Archive)文件,方便分发、部署和运行。本篇文章将详细阐述Java打Jar包的方法,并通过实例进行演示。 1. **...
Java工程脱离Eclipse运行是指将Java工程从Eclipse中独立出来,生成一个可以独立运行的JAR包。下面是实现这一过程的详细步骤: 1. 选择要导出的项目,右键点击选择“导出” 2. 在弹出的框中选中“jar 文件” 3. 选择...
3. 在弹出的窗口中,展开“Java”选项,然后选择“Runnable JAR file”(可运行的JAR文件),点击“Next”(下一步)。 4. 在“Launch configuration”(启动配置)中,选择你要作为主类运行的程序,即包含`public ...
3. **选择导出类型**:在弹出的对话框中,选择`Java` -> `Runnable JAR file`。 4. **配置导出设置**:在下一步中,你可以选择是否将项目依赖项(例如库和其他jar文件)包含在最终的jar文件中,以及是否添加...