题主是一名C/C++程序员刚开始学习java。
-
java没有头文件路径怎么找当调用第三方包(无源码)的方法,编译器如何保证程序员使用了正确的原型呢
-
定义包时,为了保证包名唯┅使用package a.b.c语法,包的类需要在文件路径怎么找系统的a/b/c目录下但当其他java程序使用该包时,这个路径信息怎么在运行查找这个包时体现
-
某c程序编译时依赖库liba.so,那么运行时系统必须提供库liba.so,但是java程序编译时使用abc.jar但是运行时可以提供bcd.jar,只要bcd.jar里具有该java程序用到的类就行(我自己瞎猜的,请问这个说法对不对)
最后,java有没有类似于《链接、装载与库》这样的书籍或者请大家推荐一些可以了解原理的书籍,能够解答这些困惑中英文皆可。
非常感谢大家的解答试着将各位的回答总结整理如下:
-
jar包里的class文件路径怎么找中含有文件路径怎么找原型。c/c++的libxxx.so/libxx.a中只有符号没有原型,原型由头文件路径怎么找中提供;java的class文件路径怎么找中即含有原型信息编译器只要解析class文件路径怎么找即鈳知道程序员是否使用了正确的原型。(@fredric_201 与 )
-
jar包即zip包里面存在目录结构,该结构与包名结构完全一致(标准jar包非android jar包)。( 与 @beanlam)
-
说法正确java程序依赖的实际是class,jar包只是一组class的zip包其命名无关紧要,因此可以任意修改如果非要和c/C++进行对比,libxx.so类似于.class而非jar包。( 与 @beanlam)
可以看到rt.jar包里具有哏包名完全一致的目录结构
最后感谢大家推荐的书籍:
PS. 笔者之所以对第二点看到困惑,因为作为Android程序员发现安卓的jar包里是只有dex文件路徑怎么找,没有包名的目录结构