JAVA导出JAR文件后不能连接数据库了 Class.forName(driver).newInstance();空指针异常

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA导出JAR文件后不能连接数据库了 Class.forName(driver).newInstance();空指针异常相关的知识,希望对你有一定的参考价值。

JAVA导出JAR文件后不能连接数据库了 Class.forName(driver).newInstance();空指针异常 有哪位同胞知道?多谢

在初始化一个类,生成一个实例的时候,newInstance()方法和new关键字除了一个是方法,一个是关键字外,最主要有什么区别?它们的区别在于创建对象的方式不一样,前者是使用类加载机制,后者是创建一个新类。那么为什么会有两种创建对象方式?这主要考虑到软件的可伸缩、可扩展和可重用等软件设计思想。

Java中工厂模式经常使用newInstance()方法来创建对象,因此从为什么要使用工厂模式上可以找到具体答案。 例如:
class c = Class.forName(“Example”);
factory = (ExampleInterface)c.newInstance();

其中ExampleInterface是Example的接口,可以写成如下形式:
String className = "Example";
class c = Class.forName(className);
factory = (ExampleInterface)c.newInstance();

进一步可以写成如下形式:
String className = readfromXMlConfig;//从xml 配置文件中获得字符串
class c = Class.forName(className);
factory = (ExampleInterface)c.newInstance();

上面代码已经不存在Example的类名称,它的优点是,无论Example类怎么变化,上述代码不变,甚至可以更换Example的兄弟类Example2 , Example3 , Example4……,只要他们继承ExampleInterface就可以。

从JVM的角度看,我们使用关键字new创建一个类的时候,这个类可以没有被加载。但是使用newInstance()方法的时候,就必须保证:1、这个类已经加载;2、这个类已经连接了。而完成上面两个步骤的正是Class的静态方法forName()所完成的,这个静态方法调用了启动类加载器,即加载java API的那个加载器。

现在可以看出,newInstance()实际上是把new这个方式分解为两步,即首先调用Class加载方法加载某个类,然后实例化。 这样分步的好处是显而易见的。我们可以在调用class的静态加载方法forName时获得更好的灵活性,提供给了一种降耦的手段。

最后用最简单的描述来区分new关键字和newInstance()方法的区别:
newInstance: 弱类型。低效率。只能调用无参构造。
new: 强类型。相对高效。能调用任何public构造。
参考技术A 你导入的JDBC复制进去的 还是映射进去的 看看是不是 导出后没JDBC了 参考技术B 你检查一下 你的Jar文件里 是否有把数据库的驱动包打进去啊追问

已将数据库驱动jar包打包进去

java程序连接数据库

在网上下了一个java编写的程序.
包含源代码.一个jar文件.一个mdf文件.一个ldf文件.
双击jar.运行后如图

和数据库有关的选项都是灰色的.
请问.怎么样才能用到这个程序的所有功能..
怎样把这个程序和数据库联系起来?
数据库应该要连接上了。。但是选项仍然都是灰的。点用户登录输入用户名密码。
提示对象名 “user” 无效。。
数据库连接上了。用户名是lee。。但是不知道密码怎么办?
密码是在数据库里面设置的还是在源代码里面设置的?

你这个是个GUI的桌面应用程序
jar文件 是可执行的包文件(还有一种是类库)
mdf和ldf是数据库文件 你看看是不是mssql的库文件
如果是 就安装mssql 之后用企业管理器 导入数据库

1 下载mssql2000或者mssql2005
2 安装软件 这你自己百度
3 导入附加数据库 也是百度
4 查看你下载的文件有没有说明类型的帮助文件 查找如数据库名称 端口 密码之类的信息
5 上述完毕后重新使用这个jar文件
参考技术A 一个mdf文件.一个ldf文件.

是sqlserver数据文件,需要安装sqlserver2000或2005将这些文件导入到数据库或装载
参考技术B 发我份瞧瞧,随后上图
kkliensong@163.com
参考技术C 这是权限限制,你登录进去后就可以操作了,修改源代码,把数据库相关信息改成你本机的数据库 参考技术D 用管理员用户就好 了嘛 第5个回答  2010-04-21 JDBC技术:Java DataBase Connection

以上是关于JAVA导出JAR文件后不能连接数据库了 Class.forName(driver).newInstance();空指针异常的主要内容,如果未能解决你的问题,请参考以下文章

我用eclipse导出的runnable jar不能双击执行,但在命令行可以用java -jar ***.jar运行,这是怎么回事?

java实现生成导出pdf文件需要哪些jar包

JDBC连接mysql导入jar包后为啥没反应啊

用java实现FTP需要导入啥包,导入哪里呢,能不能改个包

eclipse导出jar文件在控制台可以运行,双击不能运行

Java eclipse导出的jar怎样读写里面的properties文件