Declaring packages in eclipse - java

I'm new to java and eclipse and was wondering if someone could help me.
In my comp class we have a lab each week so in eclipse I created a folder called "compClass" in this file is the "src" folder and in that folder are 3 packages. lab1, lab2, lab3, one for each week we have an assignment. We're currently on assignment 3 so I'm using "lab3" package. In this package I have 2 files, "Test.java" and "MyInteger.java". These files were given to the students and we are supposed to modify them, however that's not my issue.
My issue is on those files I keep getting a compiler error that says: The declared package "" does not match the expected package "lab3" I'm not sure why this is happening as I didn't import anything. I created new java files and copy pasted the code in from a text file. I even tried typing it out by hand and got the same error. I tried dragging and dropping the "Test" and "MyInteger" files (as java files not text files) from a folder on my desktop to the "lab3" package and got the same error. How can I fix this?
P.S. On this post: https://stackoverflow.com/questions/7628686/eclipse-the-declared-package-does-not-match-the-expected-package/13444301#:~:text=java%20files%20to%20%22package%20path,All%20should%20be%20ok.&text=If%20you%20have%20imported%20an,the%20error%20till%20you%20restart.
The top answer said to find the src/prefix1 directory and right click on it. Then build path and use as source folder. If that is the answer then could someone please help me find the "src" directory I don't even really know what that is or where to find it.
Thank you!

Every Java project has a project root which can be configured using your IDE. In your case, the root is src/. If your code is inside a subfolder in the root, this folder represents the package your code belongs to, so in this case it's a package of lab3. If you want to not include any package declarations, then either place the code directly inside src or set lab3 as the root.

Related

How to move a JFrame file inside a folder to another folder in netbeans 13?

I want to use my "Final_Frame.java" in my "SampleFrameProject.java", sort of like interconnecting it by creating a "Final_Frame" object and then typing the "this.show()".
However, an error message appears, saying that "package com.toedter.components does not exist." That is the only error I've seen; I'm confident that my "Final Frame.java" is functioning well before I copy-paste it, hence I knew the issue was caused by my copy-pasting.
Btw all of the error is pointing to JCalender, and JComponents, I'm pretty sure I followed the instructions while installing them. They are working just fine before I move the "Final_Frame.java", but after I move it, it began to show errors. So is there any way for me to copy-paste it correctly? or are there any methods to call "Final_Frame.java" inside my "SampleFrameProject.java" without copy-pasting?
Thank you in advance!
package is a fundamental concept in Java. It is nothing but a namespace for the Java source file, reflecting the directory (folder) structure of your project after the src/main/java directory.
package is usually defined at the first line of the file. For example, given the directory structure from your root directory mavenproject2, the directory structure inside if it is src/main/java/com/foo/bar/FinalJava.java, then the corresponding package defined will be
package com.foo.bar;
// imports
public class FinalJava {
// the content of class
}
For your case, it would seem that you have copied com/toedter/components/FinalFrame.java from the Hotel_Management_System project (which already has defined a line package com.toedter.components in the file) to another project mavenproject2 which has a different directory structure (which is not clear in your question).
The solution would be to modify the package line according to your directory structure then it would solve the error.
Personally, I would suggest to learn some basics in Java, take some tutorials, or at least write some simple Java console applications before diving into GUI applications.

Intellij doesn't recognize package

i got this sample solution from my Professor, but somehow it isn't working.
IntelliJ does not recognize the packages. That's the case for every class.
When I hover over it it says:
"Package name 'spaceman.view.util' does not correspond to the file path 'view.util' "
Has anyone any idea what could be wrong?
I'm a total beginner when it comes to coding so sorry, if the question is banal.
Thank you!!
Your project spaceman is the sources root. That means anything inside a folder view/welcome in that folder is supposed to be in the package view.welcome. If you want to keep the package spaceman.view.welcome then move the whole tree into another folder spaceman inside your spaceman project directory.
Note that it's rather unusual to have the project root itself be the source root. It's way more common to have a directory like src/ be the source root (or, if you follow the Maven/Gradle convention something like src/main/java).

Java classes are in the same package (different directories) but they can't access each other

I have two files:
MyProject/src/main/java/foo_package/bar_package/MainClass.java
MyProject/src/gen/java/foo_package/bar_package/OtherClass.java
In both of those classes the very first line is:
package foo_package.bar_package;
If I call:
OtherClass foo = new OtherClass();
It cannot resolve symbol OtherClass. Why is that?
What I've tried:
Rebuild project
Invalidate cache/Restart
Reimport project
Delete .iml files and .idea folder and import everything again
It looks like there is a problem with the path of the last class:
MyProject/src/main/java/foo_package/bar_package/MainClass.java
MyProject/src/gen/java/foo_package/bar_package/OtherClass.java
If your classes have the same package (package starts after ../java/) but they are not part of the java build path, then the IDE won't recognise them as valid.
Try moving your OtherClass.java to the package where the MainClass.java is. Doing this should eventually solve your problem.
PS: be aware about the source folders of your project (most of the time main is the source folder by default and it's enough but there may be other source folders, generally added manually).
Make sure that your IDEA source folder is java, not src (for both java folders inside /gen/ and inside /main).
The sources root is marked as a blue directory in "Project" window (Alt + 1).

Problems running Java from Atom

I currently don't have a working way to edit and run Java on my computer, so I'm trying to get Atom working with Java (I realize it's not a Java IDE and I'm not trying to make it one, I just want to be able to do some light Java work on my laptop). I've installed the script and instant-build packages for Atom and wrote the following test code in a file called "main.java' in my project folder:
class Main{
public static void main(String[] args) {
System.out.println("please");
}
}
When I try to run the code with cmd+i (I'm on a 2012 MacBook Pro) and get the following error message:Error: Could not find or load main class main.
I'd be happy to provide any further information; thanks for helping!
The huge problem of learning Java is that you need to launch the projects in a very strict way, and setting the classpath is always problematic. The solution lays in the following (pretty enigmatic) line of the "Script" documentation:
Project directory should be the source directory; subfolders imply packaging.
So, instead of opening a plain file, open the project (folder) with .java classes or define inside the file, the package to which your .java belong.
It's due to the fact that JDE needs to create a virtual target in form of .classess and single .java file definitely can't be launched as standalone file. I suppose that "Script" is not able to locate the source folder when you try to execute seperate .java file.
Before launching your .java files always "Add Project Folder..."
Please remember that it's not possible to have several folders opened if they don't belong to the same project. Such situation cause problems of locating the right classpath and in the end javac prompts the error.
You have to name your file with the first letter in upper case Main.java, since it must match the name of your class
I replicated the issue quite easily. If I created a new directory in Atom itself and then tried to run the code it didn't work as your error message came up for me as well. Error: Could not find or load main class main.
I used an existing directory and then created a file inside that folder in Atom and ran the same code it worked. I then copied and pasted that same file into the directory of my choice and it worked.

How to generate package structure from standalone *.java source files?

I've been searching for answer for my problem but I can't find some relevant information, so I'm asking. I've directory which contains thousands of Java classes with source code (*.java files). Each of those files contains information to what package the file belongs, its classnames + code itself of course. I need to find some function of the Eclipse IDE (or maybe of another IDE) which is able to reconstruct packages under the 'src' directory based on the information in the class files and bring to me a good Java project structure so the restored packages and its classes can be easily imported into a new Java project then. Creating the structure of packages manually would take me (maybe) lot of days...
For clarification:
I have:
directory which contains: 1.java, 2.java, 3. java, n.java...
I need:
directory which will contain:
[src] -> [package_1] -> [1.java, 2.java, etc...]
...
[src] -> [package_m] -> [3.java, n.java]
I think this must be possible somehow as the each class file contains information to which package it belongs actually.
Just if you find no better solution: At least you can import all sources into a project in Eclipse and have Eclipse move each file to the right package by means of using the quick fix for each problem. You still need to press 3 keys per wrong package declaration, but it saves you from fiddling with files and folders.

Categories

Resources