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,一经查实,立即删除!

相关文章

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

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

java判断对称素数_SM2非对称算法的原理及实现 Java SM2的代码案例 | 一生孤注掷温柔 | 小奋斗...

SM2椭圆曲线公钥密码算法:我国自主知识产权的商用密码算法,是ECC(Elliptic Curve Cryptosystem)算法的一种,基于椭圆曲线离散对数问题,计算复杂度是指数级,求解难度较大,同等安全程度要求下,椭圆…

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

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

python可以做特效吗_学习mel语言,Python,JavaScript到什么程度才能做一下大型特效,要自已开发插件脚本呢?...

感谢邀请。首先自己要在某一方面要擅长,认准一个定位。比如android是钥匙做前端应用软件的,python可以做爬虫及其人工智能,js做全段网页,java主要是做后端的1、我们程序员对于开发软件来说,无论你选择的是那种语言&…

POJ2513-Colored Sticks

/*思路:类似图论中“一笔画”问题,两根木棒的相连接的端点是一样的颜色,(a,b)--(b,c)--(c, d)....方法:trie树并查集, 利用trie树建立字符串和某一个节点的映射,并将这些和字符串构成…

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、软件制作这种动…

php抖音跳转地址,PHP如何实现解析抖音无水印视频

问题来源很多时候你在douyin里看到了一个短视频,想复制下来自己编辑文字来发布,可是视频里的水印却是原者的。这个时候你想把水印去掉,你要如何做呢?这里提供PHP实现去除水印的主要方法,其实很简单。使用方法&#xff…

php 分割二维数组,拆分二维数组 php

把以下数组拆分:{"errcode": 0,"msg": "成功","data": {"list": [{"ticket_no": "1","options": ["周四301","周四302","周四303"],"play_ty…

Dijkstra算法优先队列实现与Bellman_Ford队列实现的理解

1 /*2 Dijkstra算法用优先队列来实现,实现了每一条边最多遍历一次。 要知道,我们从队列头部找到的都是到3 已经"建好树"的最短距离以及该节点编号, 并由该节点去更新 树根 到其他点(被更新的节点可以在队列中4 ,也可以是…

php times33,PHP Hash算法:Times33算法代码实例

最近看书,里面提到了一些Hash算法。比较有印象的是Times33,当时理解不是很透测,今天写了段程序来验证了一下。先上代码:复制代码 代码如下:/*** CRC32 Hash function* param $str* return int*/function hash32($str){return crc3…

捡到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…

java中两种添加监听器的策略

/*第一种:将事件的处理委托给其他对象,下面的例子是委托给了MyListener(implements ActionListener)*/ 1 import java.applet.Applet;2 import java.awt.event.*;3 import java.awt.*;4 public class ChangeColor extends Applet{…

php dos命令用不了,windows下如何使用DOS命令强制复制文件

有的时候,我们可能需要替换某些目录下的一些文件,手动去一个个目录找的话,就会比较麻烦,这时候,就是我们程序员上场的时候了,程序虽然好写,但是dos命令并不是每个人都玩的转的,而且最…

java的栈图形演示

1 import java.awt.*;2 import javax.swing.*;3 import java.awt.event.*;4 /*5 指示发生了组件定义的动作的语义事件。当特定于组件的动作(比如被按下)发生时,由组件(比如 Button)生成此高级别事件。6 事件被传递给每…

python播放本地视频_python opencv 读取本地视频文件 修改ffmpeg的方法

Python opencv 读取视频的三种情况:情况一:通过摄像头采集视频情况二:通过本地视频文件获取视频情况三:通过摄像头录制视频,再读取录制的视频摄像头采集、本地视频文件的读取、写视频文件,网上都有代码。我…

kali里PHP文件502错误,解决Linux Kali iptables开放22端口失败等一系列问题

这篇文章是针对2020年下载安装的kali系统碰到的关于 iptables开放22端口失败等一系列问题的解决办法,如果是其它系统,可以借鉴一下思路。各种报错:# sudo systemctl start iptablesFailed to start iptables.service: Unit iptables.service …