Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
EclipseJava:将现有源代码作为不同的包使用(由于可见性)_Java_Eclipse_Package_Visibility - Fatal编程技术网

EclipseJava:将现有源代码作为不同的包使用(由于可见性)

EclipseJava:将现有源代码作为不同的包使用(由于可见性),java,eclipse,package,visibility,Java,Eclipse,Package,Visibility,我有3个不同的Java项目: Project A: some basic functionality (Package: "com.a.b.c") Project B: should be a library and uses A (Package: "com.b.c.d") Project C: should be a library and uses A (Package: "com.c.d.e") 当我放弃B和C的库时,我希望A的功能完全隐藏在库中,因此我考虑包的可见性,但不想将源代码从

我有3个不同的Java项目:

Project A: some basic functionality (Package: "com.a.b.c")
Project B: should be a library and uses A (Package: "com.b.c.d")
Project C: should be a library and uses A (Package: "com.c.d.e")
当我放弃B和C的库时,我希望A的功能完全隐藏在库中,因此我考虑包的可见性,但不想将源代码从A复制到B和C(相应地更改包)。 我是否可以将源代码从A链接到B和C,以便根据其他(链接)项目对其包进行不同的解释? 示例:项目C看到项目A中的源代码,就好像它是自己包的一部分一样

希望这是可以理解的


提前感谢

这在Java中是不可能的。我喜欢将Java中的包看作一种模块。因此包可见成员/类提供了功能,这些功能只在模块内部需要,但太大了,无法放入单个类中(如果是私有的)。让B或C访问包可见元素会破坏模块A的封装(不幸的是,Java中的包更多的是一种命名约定,而不是一种内在的模块机制)

因此,您希望让B和C与模块A的公共接口进行交互。据我所知,您希望实现的是限制谁可以使用模块A的接口-这在Java中是不可能的。事实上,Java中的所有可见性级别都不能防止“未经授权”的使用。包可见性可以通过在同一个包中定义访问类(即使它在另一个.jar中)来打破,私有和受保护可以通过反射来打破


如果您想隐藏一个代码以防止被盗,您可以使用源代码混淆器,以使反编译/重新设计更加困难

你说的“项目”对我来说意味着你没有使用插件,对吗?否则,B和C可能是a的一个片段。我会将项目B和C“链接”到导出的JAR,甚至将项目a的JAR嵌套在B和C中。为什么C必须看到a的“源代码”?我希望B和C能够使用来自a的包可见类/方法,而不给B和C的用户使用它们的可能性。谢谢你的回答。