eclipse运行项目之后,为何会生成带有$的文件

子寒 发布于 2013/10/10 10:22
阅读 718
收藏 1

项目是用的JFinal开发的,在项目运行之后,在classes目录里,多了一些带有$字符的文件,这是因为啥?其他的项目好像都没有

在这样的情况下,在本地跑和tomcat跑是没问题的,但是在weblogic里启动服务器的时候就报错了,提示缺少xxxxx$2类,事实上这个类在目录下是没有的

 

不太明白编译之后,为何会生成带有$的class

 

@JFinal

加载中
0
书一
书一
貌似内部类或者没有用public修饰的类会在编译成class之后带$
大喵哥
大喵哥
+1 正解
子寒
子寒
类是我自己加的,而且也是用的public的修饰符
0
子寒
子寒

现在生成的情况是:

xxxx.class   xxxx$1.class  有的有xxxx$2.class

大喵哥
大喵哥
把你自己的那个类贴出来看看
0
子寒
子寒
public class LoginLogService {
	private static final String CACHE_NAME = "LoginlogService";

	private static LoginLogService service;

	private LoginLogService() {
	}

	public static synchronized LoginLogService me() {
		if (service == null) {
			service = new LoginLogService();
		}
		return service;
	}
}

其他的就只有些sql查询而已

 

 

 

子寒
子寒
回复 @Singer : 有,其他的就是普通的sql操作
大喵哥
大喵哥
你这个里面java文件里面就只有这些代码 没有其他的了?如果没有的话是绝对不会产生$的class文件的。
0
子寒
子寒
刚做了个试验,增加了个新类按上面写,不会有生成,但是增加了其他的增删改查的操作就生成了?这是为何
0
大喵哥
大喵哥
public class LoginLogService {
        private static final String CACHE_NAME = "LoginlogService";

        private static LoginLogService service;

        private LoginLogService() {
        }

        public static synchronized LoginLogService me() {
                if (service == null) {
                        service = new LoginLogService();
                }
                return service;
        }
        class A{
                
        }
}
这样的有内部类的情况的时候就会有$出现
0
大喵哥
大喵哥
如果用$1 $2用数字代表的话 应该是匿名内部类
0
采飞扬
采飞扬

引用来自“Singer”的答案

public class LoginLogService {
        private static final String CACHE_NAME = "LoginlogService";

        private static LoginLogService service;

        private LoginLogService() {
        }

        public static synchronized LoginLogService me() {
                if (service == null) {
                        service = new LoginLogService();
                }
                return service;
        }
        class A{
                
        }
}
这样的有内部类的情况的时候就会有$出现

class A{

}

这是个内部类,有这个就会有$

缪斯的情人
缪斯的情人
回复 @子寒 : 检查下代码有没有使用回调或者事件监听,猜测是使用了匿名内部类
子寒
子寒
即使去掉class A 一样的会有的
0
缪斯的情人
缪斯的情人

1.没有声名作用域,参照jfinal代码中com.jfinal.core.Config,编译出来为com.jfinal.core.Config$1

2.有内部类或者匿名内部类。后面的1,2,3指的是匿名内部类的个数,对应着编译出几个class文件。

子寒
子寒
第一种情况可以排除,我刚试验过了 第二种情况,什么才叫内部类,像他们说的CLASS A 这个我已经删除了,但是一样的有
返回顶部
顶部