I don't understand the purpose of the src folder and separate packages
I've been using Eclipse only for Python over the last few months, and I'd like to start using it for Java.
However, according to the tutorials I've looked at, the proper way to organize your Java project is to create a package in the source folder named, for example, com.project
, and have all the classes and such be named com.project.class
. You can also make sub-packages that work similar to sub-directories such as com.project.utilities.*
. With this convention, I don't see why I would create more than one package per project. Since all the code is contained within this structure, what purpose does the src
folder serve?
I hope I'm just wrong about this being the normal way to structure a Java project, because it seems pretty inconvenient.
Also, 开发者_JS百科I haven't fooled with this yet, but wouldn't this make loading external dependencies a pain? If I have an img folder placed next to the src and bin folders, wouldn't I have to use ..\img\*
to access it?
Yes, for small project might not make much sense. You could just have:
MyProject
|
+ - FileOne.java
+ - FileTwo.java
+ - FileThree.java
But for larger projects you may need to separate into packages, classes that belong to different kinds of functionality.
For instance the core java library has ( to name a few )
java.lang ( contains core clases such as Object, String, Integer, Boolean, StringBuilder ) java.util ( contains utility classes like List, ArrayList, Date, Map, Timer etc ) java.io ( contains classes for Input/Ouput like File, InputStreamReader, BufferedReader etc
java.sql, java.swing, java.text etc. etc
That way, you "pack together" classes that are related to each other.
The source code for these classes, are by convention in a folder named src
So you would have:
YourProject
|
+ - src
|
+ packageA
|
+ packageB
You may also need to separate source code from compiled files, so the classes
folder is used by convention. Additionally you may want a separate folder to put 3rd part libraries in, another for resources like images, auxiliary files or other, a different for documentation, etc.
So a typical layout may be:
YourProject
|
+ - src/
+ - lib/
+ - classes/
+ - resources/
+ - conf/
+ - bin/
+ - doc/
+ - etc/
But of course, it only makes sense for large projects.
Web apps usually contain also a WEB-INF folder etc.
If your project contains only a couple of classes, don't worry and go with a single folder, but it good to know what's the rationale.
I can understand why this might seem inconvenient for small projects. However, if you ever have to work on a project with hundreds (or thousands) of source files, having intuitive sub-packages are an absolute necessity to keep everything organized.
As far as loading external dependencies based on the relative path from where the source file is located, it all depends on how the compiled application is organized. It is not typical to reference resources with "..\img" like you describe.
You don't have to put everything in a package. For very small apps you can just put the java source file(s) directly in the src directory, which means your classes will belong to the "default" package. But most projects use a unique package name in order to avoid name clashes, for example between java.util.Date and java.sql.Date.
Using a "src" directory is a convention that the IDE, build tools, and other programmers all readily understand. If you avoided "src" and instead used a directory structure like:
com/project/MyClass.java
img/icon.jpg
...etc
Then you can't simply tell the IDE to look for java source files in the "com" folder, because then it will interpret the class as being "project.MyClass" instead of "com.project.MyClass". On the other hand, you can't tell it to look for source files in the root folder either, because then it will expect the img folder to contain java sources.
精彩评论