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, 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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With