问题描述
我正在Eclipse(Mars)和Windows(8)中构建一个小型Java框架。 我的源代码文件位于以下位置:
d:\\ libs \\ standard \\ java
在该目录下
a) com \\ domain \\ standard它包含com.domain.standard.java并定义AClassIn_com_domain_standard
b) com \\ domain \\ web,它包含com.domain.web.java并定义AClassIn_com_domain_web ,导入com.domain.standard并定义SomeClassDerivedFromAClassIn_com_domain_standard
我需要将此类文件包含在Eclipse项目中,并能够对其进行编辑,或者换句话说,将其视为项目的一部分。 我不想简单地将它们复制到整个项目中,因为它们将在其他几个项目中使用和共享。
在项目(DynamiC Web项目)中,我有一个源(SomeClass.java),该源导入com.domain.web并定义SomeClassDerivedFrom_AClassIn_com_domain_web
我将d:\\ libs \\ standard \\ java作为链接源并以不同的包含模式添加到构建路径中
a)如果包含*,文件将显示在项目浏览器中而不会出现错误
b)如果我将包容模式保留为空,则还会显示文件,但有关程序包名称的错误(不匹配...)
无论哪种情况,源代码SomeClass.java都无法解决导入com.domain.web的问题。
即使我故意在d:\\ libs \\ standard \\ java中的任何程序包中引起语法错误,也不会对其进行标记,这会导致不包含在项目中的假设
我检查了和其他页面中,而没有找到正确的答案。
?我的包裹名称是否错误或位置错误? (我是Java新手)?我想在Eclipse中做些什么? 还是显而易见的?有人可以提供解决方案吗?
最好的祝福
1楼
第一个误解是Java软件包是公共类(如Oracle软件包)的集合。 他们不是。 每个源文件只能出现一个公共类,并且package指令用于提示和确保该类属于哪个包。 从第一个出现的第二个是源文件名。 它应与类名(包括大小写)匹配
所以步骤是
a)将com.domain.standard.java重命名为AClassIn_com_domain_standard.java
b)将com.domain.web.java重命名为AClassIn_com_domain_web.java
c)从AClassIn_com_domain_web.java中删除import指令。
不再需要它(也没有什么坏处)
d)在com \\ domain \\ web下创建一个名为SomeClassDerivedFromAClassIn_com_domain_standard.java的新源
e)将d:\\ libs \\ standard \\ java作为链接源添加到构建路径,而将导入模式留空
SomeClassDerivedFrom_AClassIn_com_domain_web.java正确导入任何包,并且标记了源代码错误