中易网

求助:eclipse中的Class.forName出错

答案:3  悬赏:70  
解决时间 2021-04-27 10:09
  • 提问者网友:践踏俘获
  • 2021-04-26 23:45
不是运行出错,而是编译就不通过,写在上就有红圈白叉
提示为:
-Syntax error on token "forName" = expected after this token
-Syntax error on token(s), misplaced construct(s)
该语句为:
Class.forName("com.mysql.jdbc.Driver").newInstance();
最佳答案
  • 二级知识专家网友:伤口狠精致
  • 2021-04-27 00:03
首先你要明白在java里面任何class都要装载在虚拟机上才能运行。这句话就是装载类用的(和new 不一样,要分清楚)。A a = (A)Class.forName("pacage.A").newInstance();这和你A a = new A();是一样的效果。关于补充的问题答案是肯定的,jvm会执行...
全部回答
  • 1楼网友:丢不掉的轻狂
  • 2021-04-27 01:50
可怜的娃啊,java build path 这个名字已经告诉你,这是编译构建程序用的,隐含了这不是运行时的配置。 当你的程序在 tomcat 上运行时就得按 tomcat 服务器的设置来配置,j2ee 标准的方法那就是把 jar 放到 web-inf/lib 目录下。如果你依然想让 tomcat 使用电脑上的外部目录下的 jar ,你得在 monitor tomcat 那个程序的配置框中添加 classpath。如果你的 tomcat 是安装版本的,在开始菜单上就有 monitor tomcat。 j2ee 中一程序是允许被部署多次的,比如同一个 war 或 ear 部署成两个不同名字的应用程序,每个给不同的客户使用,它们的逻辑可能略有不同,但ejb 名字配置等都一样,各自使用不同的数据库配置。那么这时 j2ee 服务器是为它们提供了这种同时运行的支持,那就是 每个application 本身有自己的 classloader,比如 ear 是自己的,ear 里面的 war 可以选择有一个自己的 sub class loader,而另一个独立的不属于任何一个 ear 的 war 也可以像 ear 那样有个 application 级的 class loader。 java 设计中 class loader 是一个名字空间,用来隔离对象的,两个对象即使类名包名完全相同,但 class loader 不同,依然在赋值时产生 classcastexception,因为在 jvm 看来它们的名字其实不同。这就是为什么 j2ee 服务器中配置类路径有些讲究的原因。你至少不能破坏这种约定。 我之前用过 sybase easerver 4.1 - 5.5,它自称支持 j2ee 1.2 - 1.3 ,但实际上它为了同时支持异构分布式 (corba, ejb , activex, powerbuilder nvo) 几种混合使用,它把类路径搞得不符合 j2ee 的要求,实际上不完全支持 j2ee 1.3 对这个 class loader 隔离的要求。因为它为了支持 corba,把 ejb 的接口类及依赖的文件解压到了一个服务器共用的目录下,这就是说当一个 ejb 的两个不同版本就会互相覆盖,不能同时工作。
  • 2楼网友:花一样艳美的陌生人
  • 2021-04-27 00:39
没有抛出异常。 try { Class.forName("com.mysql.jdbc.Driver").newInstance(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息