java 运行 出现选择_Eclipse 运行出现java.lang.NoClassDefFoundError的解决方法

上篇博文也提到了这个问题,但没有深入的讲解。这次特意做了整理,详细解释其原因。

先看错误java.lang.NoClassDefFoundError,显然是java虚拟机找不到指定的类,多数情况下是外部jar中的类。

Eclipse的自动化,集成化,方便了我们的开发,却也迷住了我们的双眼。遇到这个问题,我想和大多数朋友一样,按部就班的检查jar包,然后右键Builder

path,add external archives ..

在ADT17之前,如果要在Android项目中引入外部JAR包,这种方式是正确的,只需在项目属性的Java Build

Path中选择Add External JARs,然后选择相应JAR包即可。

但是,在升级到ADT17之后,Android项目下多出了一个Android Dependencies目录,之前通过Add

External JARs加入的jar包依然出现在Referenced

Libraries目录之下,但是似乎已经被弃用,虽然没有提示任何错误,但是在运行时会抛出ClassNotFoundException。

解决方法是将JAR包加入到Android

Dependencies下,其中一个默认引入目录是libs,因此只要将JAR包复制该目录下。

我们用最直接的方法来看,别忘了工程下得classpath文件,这才是王道。。无论你怎么操作,最终的jar包配置都在这里。。

1、选择项目属性的Java Build Path中选择Add External JARs,添加jar包,如图:

a4c26d1e5885305701be709a3d33442f.png

最终生成的classpath如下:

encoding="UTF-8"?>

path="src"/>

path="gen"/>

path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>

kind="lib"

path="libs/android-support-v4.jar"/>

path="libs/gson-2.2.2.jar"/>

path="libs/pinyin4j-2.5.0.jar"/> 

kind="output" path="bin/classes"/>

看清楚了吧,配置的只是相对路径,难怪找不到jar。。

有人说选择libs文件夹,然后选择use as source

foalder,试了一下classpath如下:

encoding="UTF-8"?>

path="src"/>

path="gen"/>

kind="src"

path="libs"/> 

kind="con"

path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>

path="libs/android-support-v4.jar"/>

path="libs/gson-2.2.2.jar"/>

path="libs/pinyin4j-2.5.0.jar"/>

path="bin/classes"/>

增加了一句话,但还是找不到jar包。。

使用ADT17以上,默认创建的android工程会多一个Android

Dependencie这样一个包。(这个包千万不要删除,删除了找都找不回来,至少我还没有发现找回来的办法)所有引入的包都会备份放在Android

Dependencie包下。引入的包也必须放在指定的目录下( 根目录的libs目录下),否则就找不到了。

默认的classpath文件如下:

encoding="UTF-8"?>

path="src"/>

path="gen"/>

path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>

path="com.android.ide.eclipse.adt.LIBRARIES"/>

path="bin/classes"/>

添加jar包时,只需要把jar包拷贝到Libs目录下,这时候你会看到Android

Dependencie目录下也会出现刚添加的jar包。

从ADT16开始,Android项目中多了一个名为“Android Dependencies”

的库应用文件夹,这是ADT的第三方库新的引用方式。

当你需要引用第三方库时,只需在项目中新建一个名为"libs"的文件夹,然后将所有第三方包拷贝到该目录下。当eclipse启动时,ADT就会自动帮你完成库的引用,而不需要像以前一样自己Build

Path,也不再需要Referenced Libraries了。

如果不行,就执行下面操作:

你还需要选择项目属性的Java Build Path,然后选中Android Dependencie,执行Add

External JARs,然后选择相应JAR包即可。

encoding="UTF-8"?>

path="src"/>

path="gen"/>

path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>

path="com.android.ide.eclipse.adt.LIBRARIES"/>

kind="lib"

path="D:/workspace_Android/RR/libs/gson-2.2.2.jar"/> 

kind="output" path="bin/classes"/>

只有加到这里才算真的把jar包添加进来。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/532011.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设置熄屏_刚买的手机微信收不到信息提醒耽误事情,手机到手一定要这样设置...

手机使用过程中经常会遇到第三方软件接收不到信息提醒的状况,常常因此耽误了很多重要的事情,造成损失。特别是刚换新手机或者手机刚升级系统时发生的最多。一般都觉得是手机问题,其实只是手机的系统设置出现了问题,只要跟我按照以…

multipartfile 获取音频时长_抖音音频下载捷径:一键提取音频,安卓+ios全通用,完全免费...

本文相关:抖音音频提取、抖音音频快捷指令、捷径怎么获取抖音音乐…昨天有抖友分享了一个抖音短视频链接,告诉我,她很喜欢这个视频里的歌曲,但是在很多歌曲app上面却找不到相同的版本,然后就问我,有没有什么…

php windows共享内存,给PHP开启shmop扩展实现共享内存

这篇文章主要介绍了关于给PHP开启shmop扩展实现共享内存,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下在项目开发中,想要实现PHP多个进程之间共享数据的功能,让客户端连接能够共享一个状态&#xff0c…

导入ansys的实体怎么进行parameter_ANSYS在线缆线束设计中的仿真应用

ANSYS采用ANSYS Maxwell、Q3D、Twin Builder等电磁仿真软件,从线缆线束设计、寄生参数RLCG提取、到系统电磁兼容提供了全面仿真分析。创建模型ANSYS在Maxwell软件基础上提出针对用户定制化的“线缆线束设计工具包”,帮助客户参数化建立特定几何模型&…

怎么做95置信区间图_这种动态的OD图怎么做?简单3步快速搞定

之前在视频号中发过一个单车的出行数据可视化效果。动态展示了某天单车不同时段的运行情况,这种动态的OD可视化效果是如何制作的呢?使用的是kepler.gl进行制作的,其实非常简单,3步即可快速搞定。一、数据软件准备1、软件制作这种动…

捡到vivo手机怎么清除账号_为什么现在买手机,很少会去考虑OPPO和vivo呢?看一下老板怎么说...

不知道大家是否注意到,近年来OPPO和vivo的报道越来越少,而华为、荣耀和小米出现的频率越来越高。此外,网络上还有另外一个声音,一个专业的机友朋友说,宁可选择小米、OPPO和vivo,为什么熟悉自己手机的人不考…

php分析图片中水印的位置,关于ThinkPHP打水印及设置水印位置的分析

这篇文章主要介绍了ThinkPHP打水印及设置水印位置的方法,结合实例形式分析了thinkPHP打印与设置水印的相关操作步骤与具体实现技巧,需要的朋友可以参考下本文实例讲述了ThinkPHP打水印及设置水印位置的方法。分享给大家供大家参考,具体如下:最近在用Thin…

华为交换机命令_华为交换机常用命令

华为交换机常用命令:1、display current-configuration 显示当前配置2、display interface GigabitEthernet 1/1/4 显示接口信息3、display packet-filter interface GigabitEthernet 1/1/4 显示接口acl应用信息4、display acl all 显示所有acl设置 3900系列交换机5…

文件管理系统_Python学习第170节--Linux文件管理系统实际操作和具体介绍

【每天几分钟,从零入门python编程的世界!】上节我们简单了解了Linux文件管理系统,现在我们学习它的实际操作。首先我们解释下~和/的区别。~之前我们介绍过,我们说~是Linux系统的根目录,其实这个说法是不准确的&#xf…

redis 计数器 java_Redis 的 8 大应用场景!

之前讲过Redis的介绍,及使用Redis带来的优势,这章整理了一下Redis的应用场景,也是非常重要的,学不学得好,能正常落地是关键。下面一一来分析下Redis的应用场景都有哪些。1、缓存缓存现在几乎是所有中大型网站都在用的必…

预测分析算法的设计与实现_基于LD(编辑距离算法)的单词速记数据库分析设计与实现...

2020-21-1学期《最新数据库管理系统》结课作业展示。作者:牟伦利 褚四浩 陈思琴 曹鹏飞(电商11802)分工陈思琴:系统需求分析 、系统相关算法分析和ER图曹鹏飞:系统数据字典 、业务流程图、数据流程图和PPT制作牟伦利:存储过程、触…

matlab knnsearchidx,matlab查找最临近搜索knnsearch

[Idx,D] knnsearch(___) additionally returns the matrix D, using any of the input arguments in the previous syntaxes. D contains the distances between each observation in Y and the corresponding closest observations in X.使用先前语法中的任何输入参数返回矩阵…

php导出excel数据代码,phpspreadsheet导出数据到Excel的方法介绍(代码示例)

本篇文章给大家带来的内容是关于phpspreadsheet导出数据到Excel的方法介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。之前我们使用PHP导出Excel数据时使用的是PHPExcel库,但是phpoffice已经官方宣…

linux php不能写文件内容,php 在linux系统下写出文件问题

最近写了一个简单的生成文件,服务器用的linux 但是在将文件写出到路径的时候就会写出一个其他的文件夹其中一些代码如下define("paddy",dirname(__FILE__));$gkrequest_uri();$filepathpaddy.$gk;createfile($filefath,$file);//$f…

python求逆矩阵的方法,Python 如何求矩阵的逆

我就废话不多说了,大家还是直接看代码吧~import numpy as npkernel np.array([1, 1, 1, 2]).reshape((2, 2))print(kernel)print(np.linalg.inv(kernel))注意,Singular matrix奇异矩阵不可求逆补充:pythonnumpy中矩阵的逆和伪逆的区别定义&a…

liunx php的项目地址,在 Linux 配置 PHP 项目

在 Linux 配置 PHP 项目一, 搭建测试环境软件环境:(PHP 项目)PHP5.4Apache(httpd2.4)mysql5.7二, 安装1挂载:1. 把 iso 的镜像文件放到虚拟机 Linux 的 CD/ROM(在右下角 (网络适配器 / 桥接模式) 旁有个光盘, 点击连接, 之后页面出现一个光盘)2. 使用挂载命令, 把 CD/ROM 设备里…

php中改变函数路由,通过PHP重启路由器以更换IP(原创)

在采集大批量数据时常常会触发对方服务器的“自我保护”,请求过于频繁就限制访问。这时需要停留很长一段时间(十几分钟到几十分钟不等)才能恢复访问,这样采集数据的速度就受到非常大的限制。解决方法有两个:1 通过图片识别绕过验证码机制&…

krpano 场景切换 通知_一个基于Vulkan的异步场景加载设计

异步场景加载基本流程验证完成。此方法理论上只需要使用3个Vulkan的指令队列。对于移动平台上的Vulkan,指令队列数量极少,比如Adreno640只有3个指令队列可用。所以理论上这一设计也适合目前的移动平台使用。(1) graphic_queue:用于完成当前场…

如何查询linux服务器的网卡,Linux服务器如何查看有没有无线网卡

还是实验室那台服务器,连不上网。有没有界面,所以想着如何用一些命令来链接上热点。当然,在Linux下链接wifi没有win下那么一点就好了!首先我们需要的基本条件就是: 服务器上有无线网卡。[roottomato2 ~]# iwconfiglo n…

python的多行语句可以使用反斜杠_python 为什么不用分号作终止符?

作者:豌豆花下猫 来源:Python猫一般而言,编程语言中使用分号“;”来实现两种目的:作为语句分隔符:使用分号来分隔语句(statement),这样就能在一行代码中书写多条语句(一行…