首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >捆绑可执行jar文件-找不到主类

捆绑可执行jar文件-找不到主类
EN

Stack Overflow用户
提问于 2015-06-03 21:29:05
回答 1查看 831关注 0票数 0

我正在尝试执行一个jar文件StartupUtil.jar,但是它给出了一个Couldnot查找和加载主类的错误。我看了看其他类似的问题,尝试了一下,但找不出出了什么问题。

我创建的StartupUtil.jar的结构是

->com.ihc.startup.util.StartupService

->META-INF/MANIFEST.MF

清单的内容如下:

代码语言:javascript
复制
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.9.2
Created-By: 1.7.0_79-b15 (Oracle Corporation)
Main-Class: com.ihc.startup.util.StartupService
Class-Path: C:\Users\tgupta12\workspace_new\IHC_Startup\lib\bson-3.0.1
 .jar C:\Users\tgupta12\workspace_new\IHC_Startup\lib\mongodb-driver-3
 .0.1.jar C:\Users\tgupta12\workspace_new\IHC_Startup\lib\mongodb-driv
 er-core-3.0.1.jar C:\Users\tgupta12\workspace_new\IHC_Startup\classes

这是我的build.xml

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<project name="Startup" default="build" basedir=".">
    <property file="./build.properties" />

    <path id="lib-classpath">
        <fileset dir="${libApp.dir}">
            <include name="*.jar"/>
        </fileset>
        <pathelement path="${bin.dir}"/>
    </path>

    <target name="build" description="Compile main source tree java files">
        <echo message="  Build Startup Utility" />
        <mkdir dir="${bin.dir}"/>

        <echo message="  Compiling source files" />
        <javac destdir="${bin.dir}" source="${versionJDK}" target="${versionTarget}" debug="true"
             deprecation="false" optimize="false" failonerror="true" includeantruntime="false">
            <src path="${src.dir}"/>
            <classpath refid="lib-classpath"/>
        </javac>
        <echo message="  ...Compilation of source files OK" />

        <echo message="  Generating JAR for Startup - StartupUtility.jar" />
        <delete file="${out.dir}/${startup-util-name}" />
        <!-- convert classpath to a flat list/string -->
        <pathconvert property="lib.classpath" pathsep=" ">
            <path refid="lib-classpath" />
            <!--<flattenmapper />-->
        </pathconvert>

        <jar destfile = "${out.dir}/${startup-util-name}" basedir = "${bin.dir}" includes = "**/*">
            <manifest >
                <attribute name="Class-Path" value="${lib.classpath}" />
                <attribute name="Main-Class" value="com.ihc.startup.util.StartupService"/>
            </manifest>
        </jar>
        <echo message="  ...JAR Created for Startup" />

    </target>

<target name="run" depends="build">
    <java jar="${out.dir}/${startup-util-name}" fork="true"/>
</target>

下面是我的build.properties文件:

代码语言:javascript
复制
#Directories
build.dir=build
src.dir=src
libApp.dir=lib
out.dir=out
web.dir=WebContent/WEB-INF
bin.dir=classes
webcontent.dir=WebContent

#File Name
war-file-name=StartupService.war
startup-util-name=StartupUtil.jar

#Target Properties
versionJDK=1.7
versionTarget=1.7

当它试图执行目标运行时,它将给出

错误:找不到或加载主类com.ihc.startup.util.StartupService

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-04 05:58:00

我强烈怀疑问题在于它找不到依赖项,这意味着它无法正确加载主类。我以前从未见过清单中给出的绝对文件名,也不确定您是如何打破界限的(尽管这可能是有效的)。考虑到使用绝对文件名是多么不可移植,我强烈建议您只使用相对文件名。

将您的清单更改为:

代码语言:javascript
复制
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.9.2
Created-By: 1.7.0_79-b15 (Oracle Corporation)
Main-Class: com.ihc.startup.util.StartupService
Class-Path: bson-3.0.1.jar mongodb-driver-3.0.1.jar mongodb-driver-core-3.0.1.jar

然后将这些jar文件放在与StartupUtil.jar相同的目录中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30631101

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档