我正在为我们的WebLogic服务器制作一些WebFilter,并且我已经完成所有工作。
问题是如何将过滤器打包到jar文件中。如果我使用以下jardesc文件并从Eclipse创建jar文件,一切正常,WebLogic在加载webfilter类时没有问题。但是一旦我尝试使用jar.exe手动创建jar文件,我在WebLogic中加载webcontainer时就会遇到ClassNotFoundExceptions。
正在使用jardesc文件:
<?xml version="1.0" encoding="WINDOWS-1252" standalone="no"?>
<jardesc>
<jar path="C:/Workspace/Java/Jars/jars/corsfilter.jar"/>
<options buildIfNeeded="true" compress="true" descriptionLocation="/CorsFilter/corsfilter.jardesc" exportErrors="false" exportWarnings="true" includeDirectoryEntries="false" overwrite="false" saveDescription="true" storeRefactorings="false" useSourceFolders="false"/>
<storedRefactorings deprecationInfo="true" structuralOnly="false"/>
<selectedProjects/>
<manifest generateManifest="true" manifestLocation="" manifestVersion="1.0" reuseManifest="false" saveManifest="false" usesManifest="true">
<sealing sealJar="false">
<packagesToSeal/>
<packagesToUnSeal/>
</sealing>
</manifest>
<selectedElements exportClassFiles="true" exportJavaFiles="false" exportOutputFolder="false">
<file path="/CorsFilter/.project"/>
<file path="/CorsFilter/.classpath"/>
<javaElement handleIdentifier="=CorsFilter/src"/>
</selectedElements>
</jardesc>
当前jar命令:
jar -cvf corsfilter.jar .project .classpath -C .\bin dk\akait\filters\cors\CorsFilter.class
jar-command创建一个jar文件,它似乎等同于在Eclipse中使用jardesc文件生成的jar文件,除了看起来像某个符号链接到根目录中的META-INF文件夹的文件。 jar文件。
根据jardesc文件,任何人都可以解释执行jar.exe的正确命令吗?
或者
任何人都可以解释一下无效工作文件中的META-INF文件是什么吗?
答案 0 :(得分:1)
正如评论中已经提到的那样。我认为这更像是WinRar的问题,就像实际创建的jar文件一样。可能eclipse不会在内部使用jar命令来创建基于jardesc描述的jar文件。 jar文件的内部结构有所不同。
但是我建议不要依赖eclipse输出,如果你想创建一个你要在某处分发的jar文件。我个人喜欢gradle很多,而且很容易使用。
只需在项目根目录中创建一个build.gradle
文件,其中包含以下内容:
apply plugin: 'java'
// this is only needed, if you want to include the single file only
// by default all compiled files will be added to the output jar
jar {
include "dk/akait/filters/cors/CorsFilter.class"
}
task wrapper(type: Wrapper) {
gradleVersion = '3.3'
}
运行
%PATH_TO_YOUR_GRADLE_BINARIES%/gradle wrapper
这将生成一个本地包装器bat文件,用于确保您使用所需的gradle版本。
运行
%PROJECT_ROOT%/gradlew.bat build
并找到
下的jar文件%PROJECT_ROOT%/build/libs
但是,您需要遵循一些约定并将您的Java源代码放在名为src/main/java
的文件夹下,以便开箱即用。或者按照this documentation设置不同的源文件夹。
答案 1 :(得分:0)
我认为您的命令行甚至不正确。 根据{{1}}输出
用法:jar {ctxui} [vfmn0PMe] [jar-file] [manifest-file] [入口点] [-C dir]文件......
还有http://docs.oracle.com/javase/7/docs/technotes/tools/windows/jar.html
预计在[jar-file]名称之后是[manifest-file]和[entry-point]。
尝试
jar