首页 / JAVA / Java包和编译(为什么,不怎么样)
Java包和编译(为什么,不怎么样)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java包和编译(为什么,不怎么样),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2841字,纯文字阅读大概需要5分钟。
内容图文
我在eclipse中正在研究一些Java代码.代码包含在一个名为Adder的类中,它在Eclipse中位于org.processing包中.类文件中的第一件事就是该行
package org.processing
Q1)这条线究竟在做什么?为什么会这样,它的作用是什么.
代码在eclipse中运行正常,但是,当我进入工作区时如果我转到src中的src / org / processing /文件夹,当我尝试使用java Adder运行时使用javac Adder.class编译我得到以下错误
java.lang.NoClassDefFoundError:Adder(错误的名称:org / processing / Adder)
另一方面,如果我从src编译使用
javac org/processing/Adder.java
我可以使用java org.processing.Adder从src运行它,但是STILL不能从处理目录中运行.
Q2)这是否意味着编译始终与目录结构相关?
最后,如果我从头开始删除包org.processing行是.class文件,我可以在.class文件的目录中编译和运行.
Q3)为什么这一切都是这样的?我可以完全理解为代码开发强制执行目录结构,但是一旦你在字节码中这看起来有点过头了,因为现在我(显然)只能使用java org.processing从一个director(src)运行字节码.加法器.现在,我确定我在这里忽略了这一点,所以如果有人能指出它是什么,那就太好了.
解决方法:
简短的回答–Packages有助于保持项目结构的有序组织,允许您重用名称(尝试使用两个名为Account的类),并且是非常大的项目的一般约定.它们只不过是文件夹结构,但为什么它们的使用会让初学者非常糟糕.有趣的是,项目少于5个班级,你可能不需要它.
What, exactly is this line doing? Why is there, what’s it’s role.
这条线
package org.processing
告诉Java这个类文件位于名为/ org / processing的文件夹中.这允许你在这里有一个完全定义为org.processing.Processor的类,在另一个文件夹中 – 比如/ org / account / processing,你可以有一个完全定义为org.account.processing.Processor的类.是的,两者都使用相同的名称,但它们不会发生碰撞 – 它们位于不同的包装中.如果您决定在同一个类中使用它们,则必须通过使用import语句或完全限定的对象名称明确指出要使用哪个类.
Does this mean that compilation is always relative to directory structure?
是. Java和大多数其他语言都有一个称为类路径的概念.可以编译和运行此类路径上的任何内容,默认情况下,您所在的当前目录位于类路径上以进行编译和执行.要将其他文件放在类路径上,您必须对编译使用另一个命令行调用:
javac -sourcepath /path/to/source MainClass.java
…这会将源路径中的所有内容编译到当前目录中,整齐地组织在package语句指定的文件夹结构中.
要运行它们,就像您已经建立的那样,您需要在类路径中包含已编译的源,然后通过完全限定的对象名执行:
java -cp /path/to/source org.main.MainClass
Why is all this the way it is?
就像我之前说过的,这对于非常大的项目或涉及许多其他类和需求结构/组织的项目(例如Android)非常有用.它做了一些事情:
>它将源组织在一个易于定位的结构中.您没有遍布整个地方的物体.
>它可以保持对象的范围清晰.如果我有一个名为org.music.db的包,那么我很清楚我正在搞乱处理数据库和持久性的对象.如果我有一个名为org.music.gui的包,那么很明显这个包处理了表示方面.当您想要创建新功能或更新/重构现有功能时,这可以提供帮助;你可以记住它的作用,但你不能完全记住它的名字.
>它允许您拥有相同名称的对象.那里有不止一种类型的Map,如果你正在使用那些项目,那么你希望能够指定你得到的Map – 再次通过导入或完全限定的对象名称来完成.
内容总结
以上是互联网集市为您收集整理的Java包和编译(为什么,不怎么样)全部内容,希望文章能够帮你解决Java包和编译(为什么,不怎么样)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。