首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >org.json构建org.json失败,Ant可以工作

org.json构建org.json失败,Ant可以工作
EN

Stack Overflow用户
提问于 2021-09-30 23:14:49
回答 1查看 33关注 0票数 1

我已经通过一个非常基本的项目(字面上只有一个类)测试了是否正确安装了org.json,所以我知道问题一定是在我试图用ant构建我的项目时出现的。

我只能找到一个与我的问题相同的问题,但它没有解决它。

这就是我安装org.json https://www.tutorialspoint.com/org_json/org_json_environment.htm的方式

我的build.xml是什么样子:

代码语言:javascript
复制
<project name="Tracer" default="dist">
    <property file="build.properties"/>
    <property file="${user.home}/build.properties"/>

    <path id="run.classpath">
        <fileset dir="${dist.dir}">
            <include name="${project.name}.jar"/>
        </fileset>
    </path>

    <target name="compile">
        <mkdir dir="${build.dir}"/>
        <mkdir dir="${build.dir}/assets"/>
        <javac srcdir="${src.dir}/nhl"
               destdir="${build.dir}"
               debug="${compile.debug}"
               deprecation="${compile.deprecation}"
               optimize="${compile.optimize}">
            <classpath>
                <pathelement path="C:/JSON/json-20210307.jar"/><!-- tried an absolute path to my jar -->
            </classpath>
        </javac>

    </target>

    <target name="dist" depends="compile">
        <mkdir dir="${dist.dir}"/>
        <jar jarfile="${dist.dir}/${project.name}.jar"
             basedir="${build.dir}"
             manifest="${src.dir}/Manifest.mf"/>
    </target>

    <target name="build" depends="dist">
        <java jar="${dist.dir}/${project.name}.jar" fork="true">
        </java>
    </target>

    <target name="clean">
        <delete dir="${build.dir}"/>
        <delete dir="${dist.dir}"/>
    </target>
</project>

我得到的错误是:

代码语言:javascript
复制
 [java] Exception in thread "main" java.lang.NoClassDefFoundError: org/json/JSONTokener
 [java]     at (...).main(Unknown Source)
 [java] Caused by: java.lang.ClassNotFoundException: org.json.JSONTokener
 [java]     at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:636)
 [java]     at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:182)
 [java]     at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:519)

如果有必要的话,我会在使用ant时使用git-bash

我还完成了reference libraries部分。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-07 07:56:06

代码语言:javascript
复制
<project name="RayTracer" default="dist">
    <property file="build.properties"/>
    <property file="${user.home}/build.properties"/>
    <property name="prop1" value="Property 1 from Buildfile"/>// in case you want to set default system properties
    <property name="prop2" value="Property 2 from Buildfile"/>

<path id="run.classpath">
    <fileset dir="${dist.dir}">
        <include name="${project.name}.jar"/>
    </fileset>
</path>

<target name="compile">
    <mkdir dir="${build.dir}"/>
    <mkdir dir="${build.dir}/assets"/>
    <javac srcdir="${src.dir}/nhl"
           destdir="${build.dir}"
           debug="${compile.debug}"
           deprecation="${compile.deprecation}"
           optimize="${compile.optimize}"
           includeantruntime="false">
            <classpath>// compile all JAR files in the src/libs/JSON directory
                <fileset dir="${src.dir}/libs/JSON">
                    <include name="**/*.jar" />
                </fileset>
            </classpath>
    </javac>
</target>

<target name="dist" depends="compile">
    <mkdir dir="${dist.dir}"/>
    <jar jarfile="${dist.dir}/${project.name}.jar"
         basedir="${build.dir}"
         manifest="${src.dir}/Manifest.mf">
         <zipgroupfileset dir="${src.dir}/libs/JSON" includes="**/*.jar"/>// use the file
    </jar>
</target>

<target name="build" depends="dist">
    <java jar="${dist.dir}/${project.name}.jar" fork="true">
        <!-- <sysproperty key="prop1" value="${prop1}"/> --> //set system property when providing argument
        <arg value="${arg0}"/> // provide arguments without using system properties
        <arg value="${arg1}"/>
    </java>
</target>

<target name="clean">
    <delete dir="${bin.dir}"/>
    <delete dir="${build.dir}"/>
    <delete dir="${dist.dir}"/>
    <delete file="output.bmp"/>
</target>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69399693

复制
相关文章

相似问题

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