java.io.IOException: invalid header field
后来在网上查找资料说是
java.io.IOException: invalid header field异常
是因为MAINFEST.MF文件的Class-path:后面少了一空格
Manifest-Version: 1.0
Class-Path:
果然如此
继续查找:
打包一个可以直接利用java -jar 时可能遇到的问题(如果直接在eclipse中expert按照步骤选择main class导出的话就没有这个问题):
jar cvfm lottery.jar MANIFEST.MF jdbc.properties com
如果出现:
java.io.IOException: invalid header field
这样的错误的话,就说明MANIFEST.MF文件有问题,比如写成了这样:
Manifest-Version: 1.0
Main-Class:com.feishan.lottery.view.Index
Class-Path: jar/jdbc_feishan.jar jar/mysql5.0.3.jar
注意:
Main-Class:后面应该有一个空格:
Manifest-Version: 1.0
Main-Class: com.feishan.lottery.view.Index
Class-Path: jar/jdbc_feishan.jar jar/mysql5.0.3.jar
这样写就对了注意:最后一行也要有一个回车键。否则后面那一行是不能打包进去的
最后用java -jar lottery.jar就可以运行了
这个 manifest.mf 可以放在任何位置,也可以是其它的文件名,
只需要有 Main-Class: test.Test 一行,且该行以一个回车符结束即可
最后说明:Manifest 技巧
总是以Manifest-Version属性开头
每行最长72个字符,如果超过的化,采用续行
确认每行都以回车结束,否则改行将会被忽略
如果Class-Path 中的存在路径,使用"/"分隔目录,与平台无关
使用空行分隔主属性和package属性
使用"/"而不是"."来分隔package 和class ,比如 com/example/myapp/
class 要以.class结尾,package 要以 / 结尾
weblogic.application.ModuleException: Context path '' is already in use by the module
经排查是weblogic的配置文件有问题:
<?xml version="1.0" encoding="UTF-8"?>
<weblogic-web-app xmlns="http://www.bea.com/ns/weblogic/90"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<context-root>/vpg/</context-root>
<container-descriptor>
<prefer-web-inf-classes>false</prefer-web-inf-classes>
</container-descriptor>
<virtual-directory-mapping>
<local-path>/opt/apps/virtual/vpgrev</local-path>
<url-pattern>*</url-pattern>
</virtual-directory-mapping>
<jsp-descriptor>
<keepgenerated>true</keepgenerated>
<page-check-seconds>120</page-check-seconds>
</jsp-descriptor>
</weblogic-web-app>
原因就是<context-root>中的 vpg 应用名有重复。weblogic下另一个应用的weblogic.xml中的<context-root>也是vpg。