java中,怎么在一个包中引用另一个包的同名类
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中,怎么在一个包中引用另一个包的同名类相关的知识,希望对你有一定的参考价值。
如题。。注意是两个不同的包,但是包中的类名相同。。p1中有类A,P2中也有类A,同名。怎么在P2的A中引用P1的A。。
你好,
根据你的问题,两个包里面类名相同,默认会调用当前类,如真要引用,只能用下面方法
cn.fancy.p1.A a=new cn.fancy.p1.A();//用它的权限定名来确认是p1下面的A
希望我的回答能帮到你
参考技术A 1、假设package1和package2这两个包中都有一个类,名为SameName;2、假设package1中的SameName要引用package1中的SameName;
3、以下是示例代码:
package package1;
public class SameName
public static void main(String[] args)
package2.SameName sn2 = new package2.SameName();
参考技术B 用的时候在类A的前面加上包名,如在p2中写:P1.A a = new P1.A();
这个时候你就可以不写导入包语句了本回答被提问者采纳 参考技术C import P1.* 或者importP1.A追问
再导入包之后,那么在p2中的类A中怎么引用呢,,,
package p2
import P1.A
class A
A a = new A() //其实这个A应该是p1中的A;怎么识别这个new不是new的本类
你用eclipse写的时候会让你选择哪个包下面的类,你把变量名写清楚是哪个包下面的就行了,或者直接用包名.类名
参考技术D 直接用P1.A就可以了,p2中的是A,你不要importP1,这样就能区分java项目中,lib中jar包中如出现与src目录下同名同包的java文件,会优先加载运行哪个?
我改了jar包中的源文件,放在src文件夹中,生成了同名同包的文件,所以才会出现这种重复。
我在Eclipse“configuration building path”中设置了src优先,项目发布到服务器后,这个执行顺序还管用么?还是只在MyEclipse中好使。我没分儿了,谢谢热心兄弟的帮助。
在tomcat服务器运行环境中,classes包中和jar包中,出现了同名同包的类,是优先运行哪个呢?
--------------------------------------
如果是发布到weblogic的话,可以在WebContent\WEB-INF\weblogic.xml里面配置。
参考配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<weblogic-web-app xmlns="http://www.bea.com/ns/weblogic/90"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd http://www.bea.com/ns/weblogic/90 http://www.bea.com/ns/weblogic/90/weblogic-web-app.xsd">
<container-descriptor>
<!-- 修改JVAV类后不会自动重启 在debug模式下 修改方法内逻辑也不用重启,但是改变方法参数等需要重启才管用 -->
<servlet-reload-check-secs>-1</servlet-reload-check-secs>
<!-- <resource-reload-check-secs>-1</resource-reload-check-secs>
<!-- web-inf/classes里面优于lib加载 -->
<prefer-web-inf-classes>true</prefer-web-inf-classes> -->
</container-descriptor>
<!-- URL根路径 -->
<context-root></context-root>
<jsp-descriptor>
<!-- 查看(调试)JSP编译生成的java源文件 \servers\AdminServer\tmp\_WL_user\webapp\XXX\jsp_servlet\_jsp\_ -->
<keepgenerated>true</keepgenerated>
<!-- 修改JSP后不要重启服务就自动加载-->
<page-check-seconds>1</page-check-seconds>
</jsp-descriptor>
</weblogic-web-app>
-----------------------------------------------------------------
Tomcat启动时classloader加载顺序
Tomcat的class加载的优先顺序一览
1.最先是$JAVA_HOME/jre/lib/ext/下的jar文件。
2.环境变量CLASSPATH中的jar和class文件。
3.$CATALINA_HOME/common/classes下的class文件。
4.$CATALINA_HOME/commons/endorsed下的jar文件。
5.$CATALINA_HOME/commons/i18n下的jar文件。
6.$CATALINA_HOME/common/lib 下的jar文件。
(JDBC驱动之类的jar文件可以放在这里,这样就可以避免在server.xml配置好数据源却出现找不到JDBC Driver的情况。)
7.$CATALINA_HOME/server/classes下的class文件。
8.$CATALINA_HOME/server/lib/下的jar文件。
9.$CATALINA_BASE/shared/classes 下的class文件。
10.$CATALINA_BASE/shared/lib下的jar文件。
11.各自具体的webapp /WEB-INF/classes下的class文件。
12.各自具体的webapp /WEB-INF/lib下的jar文件。
Tomcat的应该也有相关配置,去别的地方查查看,我这边没有资料 参考技术A 没用了,eclipse你再怎么设置都是开发的环境,而不是发布(运行)的环境
============
tomcat先加载他自己根目录下的lib文件夹中的所有lib,
然后WEB-INF/classes
然后WEB-INF/lib下的jar包
按你的整法是,先加载你自己的class中同名类,然后才是jar包中的。
感觉这样会出错.....
最好别整重名的 参考技术B 改名字啊
以上是关于java中,怎么在一个包中引用另一个包的同名类的主要内容,如果未能解决你的问题,请参考以下文章