你这样单独编译 并不能把你引入的类也一起编译
需要使用 javac -d 参数,指定编译输出目录,然后依赖类也一起编译
javac -d classes 目录1/主类名.java 目录2/依赖的类名.java
// 运行
java -cp classes 目录1.主类名
不知道你这个问题是否已经解决, 如果还没有解决的话: 前端会出现兼容性问题,主要是因为前端代码的运行环境不同。
前端代码的运行环境是浏览器,前端写出来的代码,开发阶段在谷歌上进行测试能正常运行,在IE浏览器可能样式、功能就无法达到预期的效果;通过如果开发阶段在IE上进行测试运行,那很可能在其他浏览器上会存在大小不一的问题。
什么是兼容性?兼容性就是前端的代码所有浏览器都能正常解释执行并渲染出符合自己预期的页面
这里的兼容性指的是前端的兼容性,这里的前端代码指css、js这些代码,html不需要兼容,每个浏览器都是统一的,所以不需要兼容,大家处理方式都一样。
后端根本就不存在兼容性问题,因为他的运行环境都只有一种。java就是JVM,python就是python解释器,不需要python也能在JVM上运行(不需要也没必要)。
每一个浏览器的开发团队都不同,他们对前端都有自己的团队理解,都尽量将自己的浏览器做的有特性,被更多人使用。这就导致,虽然都是浏览器,但是不同的浏览器对CSS、JS的解释执行是不同的。比如我们要阻止事件冒泡,IE得这么写event.cancelBubble=true
,放到谷歌,谷歌不认识,还可能会报错,因为谷歌用event.stopPropagation()
阻止冒泡。同样谷歌的event.stopPropagation()
放到IE,IE也不认识。为了兼容IE和谷歌,我们得像下面这么写。
// 只有IE浏览器认识,火狐、谷歌不认识
event.cancelBubble=true
// 谷歌、火狐都认识,IE不认识。
event.stopPropagation()
// 兼容IE、火狐、谷歌写法
// 如果存在event.stopPropagation,则执行event.stopPropagation()
if(event.stopPropagation){
event.stopPropagation();
}else{
// 否则为执行IE浏览器组织冒泡行为的代码
event.cancaleBubble==true;
}
本来各大浏览器开发团队都遵循W3C的规范,就完全不存在兼容性问题。但是为了突出自己浏览器的个性,开发团队也会偏离规范进行开发,导致兼容性问题。这就是为什么早期jQuery那么火的原因之一,他底层的实现都加了一层兼容性处理,这样开发人员使用jQuery就不用考虑兼容性问题了,代码写起来就没有这么多if else分支处理。