问题场景
在学习《算法》第四版时需要在Java项目中引入一个第三方包stdlib.jar,一开始我直接在Project Structure ->Modules ->Dependencies中添加这个jar包,结果发现在我新建的package中的类访问不到这个jar包中的类,只有在src根目录下的类可以访问,并且访问时显示类是来自defualt package
问题原因
因为打开stdlib.jar可以看到,与一般的jar包不同,其下的类没有一个包名,所有的类是直接在stdlib.jar目录下,在被有包结构的类引用时,会被当成本包内的类,即编译器会在本包目录下查找默认包中的类,自然是找不到的。而由于没有包名,也无法使用import导入。
解决方案
方案一:
直接把jar包所有的类拷贝出来放到自己的package目录下,这样就不需要通过jar包的形式直接在项目中访问了,也可以把拷出来的类再打包成一个jar包再引用到项目中去
方案二:
如果你和我一样是在学习《算法》时使用stdlib.jar包遇到的这个问题,那么我推荐直接到https://github.com/kevin-wayne/algs4/下载这个zip然后打包成jar包引用到项目中使用,这样不仅不会有访问不到的问题,而且algs4.jar是包含stdlib.jar中的类的
来源:oschina
链接:https://my.oschina.net/syuchen/blog/3226289