android 编译apk ant 找不到rt.jar

android 编译apk ant 找不到rt.jar

kanzi的android程序中用到了如下的代码

import java.util.*;//工具类一般都在util里面
import java.util.concurrent.ThreadLocalRandom;
import com.rightware.kanzi.*;

public class BSplineArea extends KanziActivity
{
    private static final String TAG = "BSplineArea";
public void test(){
ThreadLocalRandom tlr = ThreadLocalRandom.current();
System.out.println(tlr.nextInt(10,50));
}
}

这个ThreadLocalRandom 是在jre的lib/rt.jar中

默认情况下rt.jar ant是不去查找的。所以编译提示下面的错误

参考网上的解决办法

http://blog.csdn.net/lday/article/details/18705837  网页上的内容也保存在附件中了

解决办法如下

找到kanzi的配置文件下的android sdk 目录设置

环境变量配置文件在C:\ProgramData\Rightware\Kanzi 3.2.3 \kanzi_environment_variables.bat

我们的配置sdk目录为

F:\KanziWorkspace_2_8_4_258\3rdPartySDKs\android-sdk-windows\tools\ant\build.xml 

找到里面的build.xml 这个是ant编译android apk的编译脚本。 

用文本编辑器打开build.xml 

搜索javac 找到下面的配置

<target name="-compile" depends="-pre-build, -build-setup, -code-gen, -pre-compile">
        <do-only-if-manifest-hasCode elseText="hasCode = false. Skipping...">
            <!-- merge the project's own classpath and the tested project's classpath -->
            <path id="project.javac.classpath">
                <path refid="project.all.jars.path" />
                <path refid="tested.project.classpath" />
                <path path="${java.compiler.classpath}" />    
<fileset dir="${env.JAVA_HOME}/jre/lib">  
<include name="*.jar" />  
</fileset> 
            </path>
            <javac encoding="${java.encoding}"
                    source="${java.source}" target="${java.target}"
                    debug="true" extdirs="" includeantruntime="false"
                    destdir="${out.classes.absolute.dir}"
                    bootclasspathref="project.target.class.path"
                    verbose="${verbose}"
                    classpathref="project.javac.classpath"
                    fork="${need.javac.fork}">
                <src path="${source.absolute.dir}" />
                <src path="${gen.absolute.dir}" />
                <compilerarg line="${java.compilerargs}" /> 
            </javac>

添加上面黄色的脚本,重新使用scons编译即可

    • Related Articles

    • 使用scons -j4 开启多线程编译apk会导致libkanzi.so 无法被打包进apk

      kanzi 3.2.3lts , kanzi 3.4 都存在这样的问题 新建一个kanzi studio project with c++ application.  进入到android工程目录下,使用scons -j4 编译, 第一次编译libkanzi.so 还没有编译出来,会发现kanzi是先编译apk,然后再link libkanzi.so  所以第一次编译出来的apk没有libkanzi.so 比较小,安装运行时提示如下错误 Process: ...
    • 在android上使用二进制变量报错“binary literals are not supported in -source 1.5”

      测试方法 新建一个工程,打开android工程目录下的src/com/rightware/kanzi/jdkbinary/jdkbinary.java  添加如下变量,使用二进制来表达 private static int i = 0b11; 编译出错“binary literals are not supported in -source 1.5” 解决办法 找到kanziworkspace323/engine/configs/platforms/android/config.py      ...
    • eclipse打开kanzi工程编译冲突问题

      如果我们在eclipse里面把kanziengine.jar包拷贝到工程中,eclispe可以正常编译, 但是scons会引发dex重复定义,这是因为scons的配置文件会解压kanziengine.jar包, 在我们之前拷贝的过程以及解压一次了,这样会引发冲突, 这时候我们把<unzip src="${engine.dir}/configs/platforms/android/kanzi_engine.jar" dest="${out.dir}/classes" />注释掉
    • kanzi 在android端的实现的原理

      kanzi在android 就是作为一个SurfaceView来进行OpenGLES的绘制的,基于的是Activity,主要有以下几个文件来实现对android这边的接口的
    • [Rendering - Android窗体透明效果]

      以下方法在Kanzi 3.6中适用 kanzi studio中设置node2d 的blend mode 为Opaque,设置透明的区域以及透明度(调整backgroundBrush的透明度) 设置kanzi surface的rgba通道为8888 (application.cfg中修改) 设置Kanzi View支持透明(参考附件代码) 设置Android ...