原文地址:http://www.java2000.net/viewthread.jsp?tid=6053
转载请注明上述链接或者CSDN的链接
1 今天彻底测试了jar程序
TestJar.java
package net.java2000.test.jar;
import javax.swing.JOptionPane;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestJar {
private String message;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
/**
* @param args
*/
public static void main(String[] args) {
BeanFactory beanFactory = new ClassPathXmlApplicationContext(new String[] { "applicationContext.xml" });
TestJar obj = (TestJar) beanFactory.getBean("TestJar");
System.out.println(obj.getMessage());
JOptionPane.showMessageDialog(null, "Jar内容", "Jar标题", JOptionPane.OK_OPTION);
}
}
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans <A href="http://www.springframework.org/schema/beans/spring-beans-2.0.xsd" target=_blank>http://www.springframework.org/schema/beans/spring-beans-2.0.xsd</A>
<A href="http://www.springframework.org/schema/aop" target=_blank>http://www.springframework.org/schema/aop</A> <A href="http://www.springframework.org/schema/aop/spring-aop-2.0.xsd" target=_blank>http://www.springframework.org/schema/aop/spring-aop-2.0.xsd</A>
<A href="http://www.springframework.org/schema/tx" target=_blank>http://www.springframework.org/schema/tx</A> <A href="http://www.springframework.org/schema/tx/spring-tx-2.0.xsd" target=_blank>http://www.springframework.org/schema/tx/spring-tx-2.0.xsd</A>">
<bean id="TestJar" class="net.java2000.test.jar.TestJar">
<property name="message">
<value>Hello World</value>
</property>
</bean>
</beans>
2 发现了这个常见的异常
E:\test>java -cp . -jar MyProject.jar
Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/beans/factory/BeanFactory
Caused by: java.lang.ClassNotFoundException: org.springframework.beans.factory.BeanFactory
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
3 经查找,发现正确的MANIFEST.MF如下
Manifest-Version: 1.0
Main-Class: net.java2000.test.jar.TestJar
Class-Path: spring.jar
lib/commons-logging-1.1.jar
这里特别说明一下
1)在 Class-Path: 后面有一个空格,切记
2)在 Class-Path: 后面写上你的jar 用空格分开
3)如果需要换行,切记在上一行末尾一定要有一个空格,下一行的开头一定要有一个空格
4)最后一行要是一个空行,否则Eclipse打包时有可能把你的Class-Path 给忽略掉
4 运行效果如下:
5 结论
1) 使用 java -cp 来设置 classpath 对于 jar来说是无效的,因为根据jar的安全规定,其内部的Class-Path 会起作用,外部的会被屏蔽掉(注意是屏蔽掉,不是覆盖掉)
2) Java自身提供了一个设置classpath的方案,那就是使用命令行参数
-Xbootclasspath: 完全取代基本核心的Java class 搜索路径.
不常用,否则要重新写所有Java 核心class
-Xbootclasspath/a: 后缀在核心class搜索路径后面.常用!!
-Xbootclasspath/p: 前缀在核心class搜索路径前面.不常用,避免
引起不必要的冲突.
语法如下:
(分隔符与classpath参数类似,unix使用:号,windows使用;)
java -Xbootclasspath/a:spring.jar;lib/commons-logging-1.1.jar -jar MyProject.jar
3)当然,你把jar放到 {Java_home}\jre\lib\ext 这个目录下面也是可以的,应为JVM肯定会搜索这个目录。
<script type="text/javascript">
</script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript">
</script>
分享到:
相关推荐
"Java 项目 jar 打包和运行" Java 项目 jar 打包是将 Java 项目打包成一个独立的可执行文件的过程。jar 文件是 Java 的存档文件格式,用于存储 Java 类、资源和元数据。下面将详细介绍 Java 项目 jar 打包和运行的...
WIN7下运行Jar文件提示Could not find the main class
NULL 博文链接:https://xienan123.iteye.com/blog/1042124
Jar包搜索工具,Class搜索,可以遍历子目录的搜索工具! 大数据那么多Jar包,总不能都引用...Class Not Found 克星 1.点CHOOSE1选择搜索目录,2.点击CHOOSE选择保存的文件(必须是已经存在的文件)3.CREATE点击开始生成
java打包jar方案的优缺点分析及解决方案,介绍3种打jar包的方法: 1.用Eclipse插件fat.jar对程序打包。 2.直接用Myeclipse的Export导出成jar包 3. 直接用Myeclipse的Export中runable jar file导出成jar包(最好就...
requires 'org.eclipse.emf 2.6.0' but it could not be found),解决方法:将“离线解决方案”文件夹中的org.eclipse.emf 2.6.0的jar,拷贝到自己的eclipse的plugin文件夹下面,重启eclipse再次安装activiti插件就...
Jar包保护加密解决方案、在有容器下的加密、解析、开发中的加密、部署阶段的解析
然而,在实际操作过程中,开发者经常会遇到各种问题,其中之一就是"ContextLoaderListener not found"的错误。这个错误通常出现在尝试启动基于Spring MVC的Web应用程序时,因为它无法找到用于初始化Spring应用上下文...
譬方说要在jar包中查询目个**.class文件。用户可以不用打开Jar包,直接输入路径和要查找的文件即可搜索。 3.除了对Jar包进行搜索分析外,还可以对zip包进行分析 4.填写搜索路径是最好不要只填写“E:/”根盘目录,...
在Java开发中,将项目打包成可运行的JAR文件是一项常见的任务,这使得代码可以在任何支持Java的平台上执行,包括Windows和Linux等。本篇文章将详细介绍如何在Eclipse环境中生成可执行的JAR包,特别针对包含第三方库...
org.apache.http.legacy.jar一个jar包,能够用来解决缺少jar包导致的相关错误。以及对NameValuePair、BasicNameValuePair两个类的使用也需要引用这个包。
ant 解决 打jar包后class 的 Aspect问题
oracle驱动包,class14.jar
支持的项目:JavaWeb项目、Tomcat项目、SpringBoot项目、单独的Jar包项目、几乎所有的Java项目都支持加密运行,保护了源码,无法反编译.class、.jar包。
Linux下启动和停止jar包运行的脚本
Class not found: org.eclipse.jdt.core.JDTCompilerAdapter 让ant使用Eclipse的打包功能. 使用ant打包的jar,变量变成如下无意义的arg0,arg1. 代码提示也同样. 而使用Eclipse的导出jar就没有问题 缺分了..很不厚道...
是tuscany与spring,axis整合所有的jar包,已解决冲突问题。
Fat Jar生成jar不能被引用的解决方法 Fat Jar是一种特殊的JAR文件格式,它可以将所有依赖项打包到一个JAR文件中,使得应用程序可以独立运行。但是,在某些情况下,Fat Jar生成的jar文件可能不能被正确地引用,导致...
引入json有关jar包,引入json有关jar,包引入json有关jar。
1. 解压文件得到:jta-1_0_1B-classes.zip 2. cmd进入zip文件所在目录 ...mvn install:install-file -Dfile=./jta-1_0_1B-classes.zip -DgroupId=javax.transaction -DartifactId=jta -Dversion=1.0.1B -Dpackaging=jar