mvn dependency:copy-dependencies -DoutputDirectory=lib
java -Djava.ext.dirs=sso com.youan.sso.server.MySSOCore
java -Djava.ext.dirs=sso com.youan.sso.server.MySSOCore
转载:http://www.yihaomen.com/article/java/393.htm
在工作中,常常用到用maven 去创建j可执行的jar 文件,当然这会用到maven的插件.maven-assembly-plugin ,在通常的情况下,这是一个简单的好用的插件,但是一旦我们的工程中使用了spring 相关的一些jar 包,这时候问题就出现了; 通常的错误如下:Unable to create application context: Unable to locate Spring NamespaceHandler
(...) 意思也很明确,要么是 schema 找不到,如果你能连接到互联网的话,可能也不会有错,加入你不能连接外网,只能在局域网的话,问题就出来了。因为找不到相关的schema . 但实际上,这些 schema 是存在与spring 的jar包中的,所以要配置路径。
如下就是 maven 的解决方法, 配置pom.xml 。
程序代码
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<finalName>my-spring-app</finalName>
<shadedArtifactAttached>true</shadedArtifactAttached>
<shadedClassifierName>jar-with-dependencies</shadedClassifierName>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.yihaomen.Clazz</mainClass>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/spring.handlers</resource>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/spring.schemas</resource>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/spring.tooling</resource>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
里面要注意 mainClass 的配置,要匹配你的CLASS.
在做了这些配置之后,你可以用 mvn package 打成jar 文件,然后就可以执行了。
(...) 意思也很明确,要么是 schema 找不到,如果你能连接到互联网的话,可能也不会有错,加入你不能连接外网,只能在局域网的话,问题就出来了。因为找不到相关的schema . 但实际上,这些 schema 是存在与spring 的jar包中的,所以要配置路径。
如下就是 maven 的解决方法, 配置pom.xml 。

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<finalName>my-spring-app</finalName>
<shadedArtifactAttached>true</shadedArtifactAttached>
<shadedClassifierName>jar-with-dependencies</shadedClassifierName>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.yihaomen.Clazz</mainClass>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/spring.handlers</resource>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/spring.schemas</resource>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/spring.tooling</resource>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
里面要注意 mainClass 的配置,要匹配你的CLASS.
在做了这些配置之后,你可以用 mvn package 打成jar 文件,然后就可以执行了。
注意:以前这样打包的时候可能直接用,最近打包报:
解决办法把是用好压打开jar包,把META-INF下的ECLIPSEF.RSA删除即可
Exception in thread "main" java.lang.SecurityException: Invalid signature file digest for Man
ifest main attributes
at sun.security.util.SignatureFileVerifier.processImpl(Unknown Source)
at sun.security.util.SignatureFileVerifier.process(Unknown Source)
at java.util.jar.JarVerifier.processEntry(Unknown Source)
at java.util.jar.JarVerifier.update(Unknown Source)
at java.util.jar.JarFile.initializeVerifier(Unknown Source)
at java.util.jar.JarFile.getInputStream(Unknown Source)
at sun.misc.URLClassPath$JarLoader$2.getInputStream(Unknown Source)
at sun.misc.Resource.cachedInputStream(Unknown Source)
at sun.misc.Resource.getByteBuffer(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
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 sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)