如何用eclipse连接sqlserver

如何用eclipse连接sqlserver,第1张

1、首先我们打开SQL Server数据库,新建一个测试数据库:

2、接下来需要下载SQL Server的JDBC驱动程序,如下图所示,驱动程序是一个Jar包文件

3、打开Eclipse软件,右键选择New下面的Java Project选项。

4、在d出的新建Java Project界面中给项目起一个名字,选择合适的JRE版本:

5、在项目文件夹下面新建一个Java文件,接着将会在这个文件中进行数据库的连接:

6、运行java文件中的main函数,我们如果看到输出栏中显示连接数据库成功则代表配置完成。

双击rptdesign打开data explorer,

右键点Data Sources -> New Data Sources ->JDBC Data Source到Next

如果没有mysql-connector-java的包,请去下一个

>

[java] view plaincopy

UNEXPECTED TOP-LEVEL EXCEPTION:

javalangIllegalArgumentException: method ID not in [0, 0xffff]: 65536

at comandroiddxmergeDexMerger$6updateIndex(DexMergerjava:501)

at comandroiddxmergeDexMerger$IdMergermergeSorted(DexMergerjava:282)

at comandroiddxmergeDexMergermergeMethodIds(DexMergerjava:490)

at comandroiddxmergeDexMergermergeDexes(DexMergerjava:167)

at comandroiddxmergeDexMergermerge(DexMergerjava:188)

at comandroiddxcommanddexerMainmergeLibraryDexBuffers(Mainjava:439)

at comandroiddxcommanddexerMainrunMonoDex(Mainjava:287)

at comandroiddxcommanddexerMainrun(Mainjava:230)

at comandroiddxcommanddexerMainmain(Mainjava:199)

at comandroiddxcommandMainmain(Mainjava:103)

没错,你的应用中的Dex 文件方法数超过了最大值65536的上限,简单来说,应用爆棚了

那么让我们看一下为什么会引起这种错误:

在Android系统中,一个App的所有代码都在一个Dex文件里面。Dex是一个类似Jar的存储了多有Java编译字节码的归档文件。因为Android系统使用Dalvik虚拟机,所以需要把使用Java Compiler编译之后的class文件转换成Dalvik能够执行的class文件。这里需要强调的是,Dex和Jar一样是一个归档文件,里面仍然是Java代码对应的字节码文件。当Android系统启动一个应用的时候,有一步是对Dex进行优化,这个过程有一个专门的工具来处理,叫DexOpt。DexOpt的执行过程是在第一次加载Dex文件的时候执行的。这个过程会生成一个ODEX文件,即Optimised Dex。执行ODex的效率会比直接执行Dex文件的效率要高很多。但是在早期的Android系统中,DexOpt有一个问题,也就是这篇文章想要说明并解决的问题。DexOpt会把每一个类的方法id检索起来,存在一个链表结构里面。但是这个链表的长度是用一个short类型来保存的,导致了方法id的数目不能够超过65536个。当一个项目足够大的时候,显然这个方法数的上限是不够的。尽管在新版本的Android系统中,DexOpt修复了这个问题,但是我们仍然需要对低版本的Android系统做兼容

目前比较常用的方法:(1) 应用插件化,比如使用我正在参与开发的插件化框架 如果有建议或者相关的问题,欢迎到Github上积极参与 (2) 分割Dex,多工程: 把所需要的class文件或者是Jar文件和一些源码一起编译生成一个Jar文件。然后使用Android SDK提供的dx工具把Jar文件转成Dex文件。我们可以提前对它进行ODex *** 作,让它在被DexClassLoader加载的时候,跳过DexOpt的部分工作,从而加快加载的过程 这两种方法并不冲突,插件化除了解决应用爆棚,还有很多其他的优点,可以看我之前的文章,不再复述

当然,Google看来也意识到了目前应用方法数爆棚的问题, 目前在已经在API 21中提供了通用的解决方案,那就是android-support-multidexjar 这个jar包最低可以支持到API 4的版本(Android L及以上版本会默认支持mutidex)

让我们看一下如何应用android-support-multidexjar(以下都以在Anroid studio中的使用为例,使用eclipse开发需要安装gradle插件,其他基本上相同):

首先可以用--multi-dex配置(buildgradle)进行解决,生成的Apk中将包含多个dex文件,比如classesdex, classes2dex 如下,需要对buildgradle进行修改:

[java] view plaincopy

afterEvaluate {

tasksmatching {

itnamestartsWith('dex')

}each { dx ->

if (dxadditionalParameters == null) {

dxadditionalParameters = []

}

dxadditionalParameters += '--multi-dex' // enable multidex

// optional

// dxadditionalParameters += "--main-dex-list=$projectDir/<filename>"toString() // enable the main-dex-list

}

}

但是默认的Dalvik 类加载器只会寻找classesdex,所以需要将它们进行合并才能使得被识别

当然,现在有了androidsupportmultidexjar的支持,一切都会变得非常简单,首先我们看一下相关源码的目录,具体的原理分析我会在之后的文章中进行讲解:

[java] view plaincopy

android/support/multidex/BuildConfigclass

android/support/multidex/MultiDex$V14class

android/support/multidex/MultiDex$V19class

android/support/multidex/MultiDex$V4class

android/support/multidex/MultiDexclass

android/support/multidex/MultiDexApplicationclass

android/support/multidex/MultiDexExtractor$1class

android/support/multidex/MultiDexExtractorclass

android/support/multidex/ZipUtil$CentralDirectoryclass

android/support/multidex/ZipUtilclass

具体集成:

将如下配置加入工程 classPath中

[java] view plaincopy

repositories {

jcenter()

}

dependencies {

compile 'comgoogleandroid:multidex:01'

}

MultiDex实现原理:

Apk在运行的时候,有一个dexpathlist,而Multidex的源码中,会根据你的系统版本号对dexpathlist做修改,将所有的dex都添加到dexpathlist中

接下来集成有两个步骤:

一 从sdk\extras\android\support\multidex\library\libs 目录将android-support-multidexjar导入工程中

二 如果你的工程中已经含有Application类,那么让它继承androidsupportmultidexMultiDexApplication类,

如果你的Application已经继承了其他类并且不想做改动,那么还有另外一种使用方式,覆写attachBaseContext()方法:

[java] view plaincopy

public class MyApplication extends FooApplication {

@Override

protected void attachBaseContext(Context base) {

superattachBaseContext(base);

MultiDexinstall(this);

}

}

最后给出buildgradle中的完整配置:

[java] view plaincopy

buildscript {

repositories {

jcenter()

}

dependencies {

classpath 'comandroidtoolsbuild:gradle:0133'

classpath 'jpleafytreegradle:gradle-android-scala-plugin:11'

}

}

apply plugin: 'comandroidapplication'

apply plugin: 'jpleafytreeandroid-scala'

repositories {

jcenter()

}

android {

compileSdkVersion 21

buildToolsVersion '2102'

defaultConfig {

applicationId 'someapp'

minSdkVersion 19

targetSdkVersion 19

versionCode 1

versionName '10'

}

}

dependencies {

compile 'comgoogleandroid:multidex:01'

compile 'comandroidsupport:support-v4:1901'

compile 'comgoogleandroidgms:play-services:5077'

compile 'orgscala-lang:scala-library:2112'

compile 'orgscaloid:scaloid_211:34-10'

}

以上就是关于如何用eclipse连接sqlserver全部的内容,包括:如何用eclipse连接sqlserver、eclipse birt如何连接mysql数据库 配置文件、multidex支持库 eclipse怎么配置等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10220230.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存