Eclipse CDT "open declaration" lists the same file" twice - eclipse

Using Eclipse Luna Service Release 2 (4.4.2), C and C++, although this problem relates to C code. Running Eclipse on Win XP.
I'm using a system with 2 projects. The projects are linked by Properties - Project References.
Some references work OK: I can use "open declaration" on a symbol in one project and it immediately jumps to the correct place in the 2nd project where it is defined.
However, occasionally I find a symbol which brings up a dialog box "Open Declaration" listing 2 alternatives, both of which are exactly the same file (by exactly the same path). One of these choices gives the correct result, the other one gives almost the same except that it's a few lines out.
Also, Eclipse (parser) thinks there are some syntax errors where there aren't any.
I've rebuilt the index on both projects, tried referencing both projects to each other and also one way only. I've stopped Eclipse and restarted it.
Any solutions?

In my case, the index was out of sync.
From the top level in the project in Project Explorer, right-click and select Index-Rebuild.
Apparently it just happens every now and then; a colleague of mine encounters it regularly (Linux build).
See info about the indexer on Eclipse help.

Related

Eclipse workspace projects suddenly have bad build path

I generated several Java projects last spring. Today I opened Eclipse back up and selected the workspace I used in the spring but now all the projects have a red X on them. They all list the same problem:
**The project was not built since its build path is incomplete. Cannot find the class file for java.lang.Object. Fix the build path then try building this project.**
The build path looks ok (I think). I tried to create a new project as an experiment to see it there are differences. The new project dialog box has **Use default JRE (Currently jre7)** checked and a warning at the bottom:
**The current workspace uses a 1.4 JRE with compiler compliance level 1.7. This is not recommendes and either the JRE or the compiler level should be changed.**
Not sure what changed since last spring but something obviously has. I don't really understand what it is trying to tell me. ?Anybody have any ideas I would greatly appreciate it. Thanks.
Update: I created a new project and compared its buildpath to one of the projects from last spring. In the new project, it has: **JRE System Library [JRE7]**
In the old project that now has the problem I see: **JRE System Library [JAVASE-1.7](unbound)**.
Somehow I think the "unbound" means something bad. Still do not understand how it was ok last spring and now suddenly it isn't.
The "unbound" means that there is no JRE at the path specified in the classpath. My guess is that, since last spring, modifications were made to your java installation(s).
To bind your project back on a JRE, click on your "unbound" JRE and click on the "Edit..." button. In the Edit Library window, select a working JRE (JRE 7 would probably be a good choice in your case), then click on Finish. The "Unbound" message should disappear and your classpath should be okay afterwards.

AspectJ causing "Editor does not contain a main type" error

After installing the AspectJ Development Tools into Eclipse, the "Run" button and the Ctrl-F11 shortcut both become nearly useless: using them (or the Debug button) will throw an "Editor does not contain a main type" error message, even for projects that do not require a main type to be present (eg. Android application projects). Standalone Java projects with a proper main type defined work fine - so it seems AJDT is forcing Eclipse to check for a Java main() without checking the project type first. Whether or not the project is an AspectJ project makes no difference, either.
The problem only appears when the file you are currently editing has either ".java", ".aj" or ".class" anywhere within its filename (note: it doesn't actually have to end with those extensions, as long as it's anywhere in there - readme.txt will work, readme.java.txt won't).
Two ways I've found to work around this - regardless of whether or not it's an AJ project - after installing AJDT is:
Select a file within your project in the Package Explorer whose name doesn't contain .java, .class or .aj, and then hit Run (the Package Explorer has to remain active and selected).
Create a new Run Configuration for your project, and use it to launch your project. This still adds a pointless extra step, as well as being impractical for those who work with a lot of projects.
I've tried this on both Eclipse Juno and Helios (Windows XP x86 as well as Win7 x64), the result is the same. While it might seem like nitpicking it certainly isn't: AJDT is hijacking the most frequently used function of the IDE.
I've resorted to having two different Eclipse installations with their own separate workspaces on my work PC, one with AJDT installed, and one without, so I can use the IDE properly when I'm not working on anything AJ-related. Since my company is working on a project that would require other developers to install AJDT into their IDEs, this is a significant issue for us that goes beyond our own loss of time - I can't imagine a lot of developers would be willing to put up with a significant bottleneck being added to their workflow for absolutely no reason at all. So most likely, they will just ditch our product instead!
Update: This has been identified to be a bug inside AspectJ, and has been reported to the AJ development team. You can keep track of it here: https://bugs.eclipse.org/bugs/show_bug.cgi?id=399660
As of this writing, the bug has already been partially fixed, restoring Run functionality to non-AJ-enabled projects.
I was just coming on this site to ask the same question. While I don't have an answer for why this is going wrong, I have a workaround which is helping me currently:
Go to Preferences > Run/Debug > Launching and select Always launch the previously launched application. This will introduce bearable behaviour when working on a single project. You will need to manually create a run configuration for your main class.

Eclipse Rename - Refactor hotkey inserts registered trademark symbol

Previously, using the ALT+COMMAND+R key combination after highlighting a variable name in a Java file would go into the rename refactor mode. Now, the key combination replaces the highlighted text with a registered trademark symbol. How can I get the key combination to go into the rename refactor mode instead of inserting the symbol?
The current file encoding is set to MacRoman, which is the default setting inherited from container. As far as I know, nothing here has changed.
I am using Eclipse Indigo (Build id: 20110615-0604) on Mac OS X 10.7.5. Eclipse IDE for Java EE Developers 1.4.0.20110615-0550 and FreeMarker IDE SDK 1.1.0.v201006011046R-H111-GA are installed. I don't think there are any non-standard plugins.
The only recent change I can remember making is installing PyDev a few weeks ago. With the default PyDev installed, ALT+COMMAND+R opens a context menu in the lower right corner with 2 option: rename and set next symbol (this is in addition to replace the text with the symbol). I disabled the Set Next Symbol key binding in my preferences, restarted eclipse, and tried the key combo again. The text was still replaced by the symbol but the rename refactor mode was not entered did not open. I uninstalled PyDev, restarted eclipse, and tried the key combo again. The text was still replaced by the symbol.
Update (December, 2012): Another user on eclipse forums is having a similar issue: http://www.eclipse.org/forums/index.php?t=rview&goto=990973
Update (January, 2013): I have opened APSTUD-7664 in PyDev's Jira. Hopefully, a developer will pick it up and find a solution.
Same problem here (OS X 10.7.5, Eclipse Juno for Java, build 20120614-1722, PyDev recently installed). The following solution worked for me:
Eclipse > Preferences... > General > Keys
Choose Rename - Refactoring (Category: Refactor - Java)
Click Unbind Command
Click Binding field and type Command-Option-R
Click OK
A possible clue as to what's going on (I don't know): the User column is set to "C" before fixing the binding, and set to "U" afterward.
Ed's unbind/rebind trick didn't work for me, but changing "When" from "In Windows" to the more specific "Editing Java Source" seems to have done the trick.
I guess it's a bit more restrictive, but for my workflow Java is really the only place I'll be doing any refactoring.
If anyone is still having this issue (and it is still an issue with the most recent Eclipse Kepler when you install PyDev), this is the solution that worked for me. It's very similar to Ed's, but I had to unbind on the PyDev command specifically.
Go into Preferences > General > Keys menu:
Filter by the word "refactor" in the filter box. What you'll see is that there's a conflict ("C" in user column):
You need to sort by the highlight the Rename - Refactoring command and sort by binding. Then remove the filter. This will show all conflicts (including the PyDev one that is fouling things up)
Click the PyDev command bound to the same key combination click "Unbind Command"
Now nothing will be bound to that key combination, so just go back up to the correct command, "Rename - Refactoring" and rebind Command-Option-R to it.
When you're finished, it will show as a User defined command (U in user column), but it will work properly in both the project menu and in the code editor. The only thing that won't work is the PyDev command that was bound to it. If you want, feel free to bind that command to an alternative key combination.
I think .. the solution is full resetting. So i do as follow.
My environment is Eclipse kepller and Mac Mountain lion.
Terminate eclipse.
Copy workspace for safety. (Maybe its useless, but for safety...)
Delete .metadata hidden folder from workspace.
Start eclipse, then you see whole new workbench without projects!
Now, import existing project from your workspace folder.
That's all. Your default rename key is restored. And you have refreshed environment.
It's simple.
Have a nice development time.

Eclipse: All my projects disappeared from Project Explorer

It seems like all my projects (except one) disappeared from the view Project Explorer.
I'm using Eclipse Java EE IDE for Web Developers.
Version: Helios Service Release 2
Build id: 20110218-0911
Note: all the projects are present on the file system.
How to bring them back? Any ideas?
This happened to me. I'm still not sure how, but the reason was that my workspace meta data had become corrupted, probably due to Eclipse being improperly shutdown. The solution, as explained here, is to:
Note, steps 2 & 3 are optional if Eclipse isn't crashing, but just not showing any projects.
Close Eclipse.
cd /home/user/workspace/.metadata/.plugins
mv org.eclipse.core.resources org.eclipse.core.resources_bak
Start Eclipse
Do File->Import
General->Existing Projects into Workspace
Click the "Select root directory" field and browse to each subfolder in your workspace folder, and import.
For me, this was very tedious, since I had several dozen projects in my workspace, but it's the only solution I found short of restoring my entire workspace from a backup.
Edit: This answer is now quite old, and better solutions may now exist. Although I haven't had need to try it, I recommend attempting #antonagestam's solution first, as others have suggested it may be faster and more effective.
Edit: Since it's fairly simple, I'd recommend trying antonagestam's solution first. However, this problem recently re-occurred for me, and that solution did not work in my case. But neither did it interfere with this solution.
I had the same problem in Aptana, all of a sudden my projects were gone. Solved it by going to the drop-down menu in Project Explorer and going Top Level Elements -> Projects.
Go to
File --> Import --> General --> Existing Project into Workspace
Then,
In Root Directory Enter the workspace path where all your projects saved & click refresh as below
And Click Finish
I was having the same problem for Android projects in Eclipse. This link was very helpful in restoring the missing projects.
Go to 'File->Import->General->From Existing Project'.
Select the root folder to the Workspace.
Click on the 'Refresh' button.
Select the required projects and click 'Finish' button.
I had the same problem in Luna, Suddenly my projects were gone in start-up.
I solved this by select Deselect working set option in the drop-down menu in Project Explorer.
Note: I post this answer even this is not a right answer for this question.
Since I search for Luna and came here,while trying with discussed things I was find this solution. This may help others.
Click on Windows > Open Perspectives > java
, Press Ok. Project Explore will come back on screen..
My solution is
open view menu and select "Top Level Elements" and set "Projects"
If any of the previous methods don't work for you then delete your old workspace, create a new workspace and put it by default. You can do this by launching Eclipse twice - the second time it asks you for the workspace ;). Then re-import all your projects there and say "problem, goodbye".
Mona is correct - Make sure that you have the task list set to show ALL as the image shows. Click the arrow to the left of the project if you want to re-factor your filter. Reset your perspective if you do not see the task list.
Today 22-03-2016, I check again this question and using ECLIPSE MARS I solved with:
Having Eclipse opened, go on FILE -> RESTART
Go on same workspace and I have all project on "PROJECT EXPLORER"
Sometime also this operation, will solve (Clicking on Projects dor see all project!!)
So Other solution is:
if you use the "Task List" view of Eclipse, it will sometimes try to hide files or projects that it thinks are not associated with a given task (i.e. any file that was not opened while you had a certain task selected as the current task). If you want Eclipse to stop hiding files
in that case, you can just delete all tasks.
Or you may also restart your eclipse and by just closing the project and then opening it again (from the right mouse click context menu) the files will be restored.
If that doesnt get your projects back then check the "filters option" (Click on right corner of Project Explorer tab and open context menu. Select Filters option from menu) and make sure that your projects type isnt checked.
you should check the active Working Set - make sure it is off.
When this happened to me I had somehow set the Project Explorer to only display Working Sets. I had none, so nothing was displayed.
To fix it, I went to the Project Explorer View Menu (next to the Minimize and Maximize icons in the Project Explorer), Top Level Elements -> Projects.
Thanks to #antonagestam for pointing me in the right direction.
It seems it happens to us all. I was happily hacking away at javascript, nowhere near all the nasty hibernate java stuff, and boom, "cant find org.jboss.logging.BasicLoging".
I havent touched anything!.
After an hour or so of trying to make that appear, restarting servers, mysql, eclipse, adding jars that weren't needed before,I deployed the fix all solution, the off button.
Then zap, no project.
(I am still none the wiser as to why calling Configuration() should now require jboss-logging...jar, maybe I needed it all along for when bad things happen)
My input is
use git, keep as little of your stuff in the eclipse workspace area as possible. Then just import project from existing git repo when eclipse loses it's marbles.
I also lost my server config. it's there but eclipse insists there no server config stuff and bombs. So make another one, I've expressed my feelings about eclipse in my new server name, and copy your apache xml configs (workspace/Servers/I_Love_Eclipse) over from the original perfectly good directory.
Not sure how/why, but this happened to me once when I added a task to Mylyn. Seemed that mylyn was filtering my projects. When I deleted the task they all came back.
None of the answers provided here worked for me. My Enterprise Explorer was completely grey and I couldn't even import or reimport projects.
In my .metadata.log I saw this error:
assertion failed: working set with same name already registered
So I deleted these file:
.metadata.plugins\org.eclipse.ui.workbench\workingsets.xml
Now I can see all my projects. I didn't have to add them back again.
I found a solution that worked better for me. Under my home folder I found a workspace/.metadata folder. I copied this folder into my eclipse workspace, replacing the .metadata folder that had been there. When I started Eclipse everything was back to the way I had left it - all projects present, all open files were still open, etc. Just like nothing had happened! I'm using Neon.
As a preliminary (before reimporting everything), here is a solution to recover working sets in which project were (if any).
I had more than 100 projects and each was in one of 14 working sets.
If your top level elements changes (accidentaly or not if it is a bug) from "Working set" to "Projects", you only see projects that are NOT in a working set, and if, as I do, you don't have any projects outside a working set, you think all is lost because you cannot see anything (blank package explorer).
So the solution is now obvious: click on the top left small white triangle MENU, than select "Top level elements", than select "Working sets".
You also have the possibility to rearrange the working sets list items.
Hope it helps
Unfortunatly the working sets were empty after the recovery, but at least I
recovered their names.
Config: Eclipse Oxygen.2 Release (4.7.2) with Java 1.8 on Windows 10.
Got this issue on returning to an Eclipse project on a VM after leaving it untouched for maybe a couple of weeks.
I started to apply the accepted answer, but when I got to the step of renaming the folder and had exited Eclipse, I saw there was an instance of Eclipse still running. I realized Windows had for some reason started a second instance of Eclipse when I hit the taskbar button. The second instance had been unable to access the workspace while the first instance was using it.
Once I undid my folder rename, and closed and restarted the original instance of Eclipse, I was able to use File->Switch Workspace to get my normal workspace back.
Solution that Cerin provide, importing each time that this problem happens, could be boring.
So I've implemented a script that control if workspace setting exits: if not, restore it to default.
I have an eclipse shortcut icon on the top panel that execute:
/opt/eclipse/checkWorkspace && /opt/eclipse/eclipse
Script checkWorkspace is the seguent:
#!/bin/bash
ECLIPSE_CONFIG_PATH="/opt/eclipse/configuration"
ECLIPSE_CONFIG_FILE="config.ini"
ECLIPSE_CONFIG_SETTING="osgi.instance.area.default"
DEFAULT_WORKSPACE_PATH="#user.home/workspace"
ECLIPSE_LOG="/var/log/eclipse.log"
cd ${ECLIPSE_CONFIG_PATH}
function sedeasy {
sed -i "s/$(echo $1 | sed -e 's/\([[\/.*]\|\]\)/\\&/g')/$(echo $2 | sed -e 's/[\/&]/\\&/g')/g" $3
}
WORKSPACE_EXISTS=$(cat ${ECLIPSE_CONFIG_FILE} | grep ${ECLIPSE_CONFIG_SETTING})
# If workspace setting doesn't exists
if [ -z "$WORKSPACE_EXISTS" ]; then
echo "worskspace setting not exists, resetting to default." >> ${ECLIPSE_LOG}
newConf=${ECLIPSE_CONFIG_SETTING}"="${DEFAULT_WORKSPACE_PATH}
echo ${newConf} >> ${ECLIPSE_CONFIG_FILE}
else
# if setting exist but it is empty
vals=(${WORKSPACE_EXISTS//=/ })
length=$(echo ${#vals[#]})
if [ "${length}" -lt 2 ]; then
newConf=${ECLIPSE_CONFIG_SETTING}"="${DEFAULT_WORKSPACE_PATH}
confToReplace=$(echo ${vals[0]})
sedeasy ${confToReplace} ${newConf} ${ECLIPSE_CONFIG_FILE}
echo "worskspace exists but is empty, resetting to default." >> ${ECLIPSE_LOG}
else
echo "Worskspace already set:" "${vals[1]}"
fi
fi
Maybe could be semplified, but works.
I tried many solutions. I found mine in the drop down menu of the Entreprise Explorer:
- Deleting org.eclipse.core.resources has no effect.
- "Top Level Elements -> Projects" was already checked for me; swtiching with Documents has no effect.
- Selecting all extensions in the filter option of the drop down menu has no effect at first sight, maybe it solve part of the problem.
The solution come from "Unselecting documents" (third choice in the Entreprise Explorer drop down menu). I think that choice reset the filtering of documents displayed in the Explorer.
Hope it'll helps
JN Gerbaux
Tedious but it worked for me (Kepler):
Using the OS zip utility, zip everything below the project workspace folder to a zip file, to be placed in a separate directory (will use c:\tmp\workspace.zip as an example).
Unzip workspace.zip to the c:\tmp directory. Assume there's a project folder called Project1
a. Ensure all the files in Project1 have Full Control permissions for Everyone or at least 777 permissions.
Remove all the project folders in the Eclipse workspace.
Recreate each project one by one according to its original type (Java, Dynamic Web, etc.). (Will use Project1 as an example.) Do not add anything.
In Eclipse, do File -> Import -> File System. Then select c:\tmp\Project1 as a source
Select the workspace Project1 as a destination. Do not overwrite any file.
In Eclipse, refresh the project and test it. It should work.
Also had this Problem.
My Solution was to uncheck the Box PyDev: Closed Projects, even if those hidden Projects are PHP and NOT Python Projects. (Strange BUG in Eclipse/Aptana???)
Be aware that even "Closed Projects" (a Topic above Pydev closed projects) is also unchecked. So you have to uncheck both Settings.
this: eclipse shows only "open projects" in project explorer
All of my projects were closed and I had hid the closed projects in the settings.
So to open projects go to top right view menu, and uncheck Closed Projects option. Assuming it is checked already.
Do the following steps
File --> Import --> Existing Projects into Workspace
Select the root directory as ur old root folder
Finish.
Yahoo.. There is ur old projects again in ur project explorer
1) File > import > Existing projects into workspace
2) Choose your workspace folder
3) select all of your projects
4) finish
All are OK with above way !!!
File - Import - Existing projects into workspace - browse - choose your workspase - done!
If Eclipse was killed during a shutdown, the projects database may become corrupted (the project database is normally located in: workspace/.metadata/org.eclipse.core.resources/.root/1.tree).
A message like this will be logged in Workspace/.metadata/.log:
!MESSAGE Could not read metadata for '.../.metadata/.plugins/org.eclipse.core.resources/.root/.markers'.
The data is lost. You need to import your projects again (File->Import ->
General->Existing Projects into Workspace).
The list of projects that were in the workspace can still be seen in .metadata/org.eclipse.core.resources/.projects/.
Projects located outside the workspace will have a .location file with the path to the project.
I also had the same problem.
file>restart.
Projects and modules appeared after restarting the eclipse, but faced new error;
An internal error occurred during: "AppXray Indexing...". java.lang.NullPointerException.
So it's good to be on safe side, import the project again in a new workspace.
if you go to Quick Access and type in Projects you will get it your projects back.

How can I get Eclipse to index an entire C/C++ source tree that contains multiple "make projects"?

I'm having trouble getting Eclipse to index my source code. I'm using Eclipse Helios on Windows XP at the moment.
I have a directory called src. Within it, I have a bunch of dirs, something like this:
src
-include (common headers)
-lib
-libIO (source code for this library)
-libGUI (source code for this library)
-pgms
-pgm1 (source code and headers for this pgm)
-pgm2 (source code and headers for this pgm)
Each leaf has its own Makefile. There is no top-level Makefile in src. pgm1 can and does include files from include and lib/libIO and lib/libGUI.
Basically, I want Eclipse to index my entire src directory, without having to set up a C/C++ project for every leaf in my tree. I can't seem to find a way to make this happen.
Here's my symptoms; what I'm trying to solve for:
When editing source in the pgm1 dir, it references functions that are declared in my include dir header files and defined in source files found in lib/libIO.
However, when I press F3 to get to the declaration of a function, Eclipse says "Could not find symbol 'X' in index". I can't seem to get Eclipse to find either the header declaration or the source definition for the method under my cursor (like the Java module does perfectly). Is this possible?
I had exactly same issue as OP but for some reason the menus in Eclipse I was using (Helios Service Release 2) were not "Go to Properties -> C/C++ General -> Paths and Symbols -> Source Location.".
The way I fixed the issue was :
in C/C++ view, right-click on top project name;
in the menu, select New->C++ Project;
in the window that appears, select Convert to and then select C++ project;
click OK to close the window.
Eclipse will start indexing right away. Depending on the size of source tree it may take a while but you will have the indexing working finally after that.
I faced similar situation. I solved it in this way: right-click the project in project View-->select Index-->rebuild.
I managed to solve this thanks to comments here.... I ended up recreating my project. I used the Import method to download a project from CVS, and told it to use the New Project wizard to do so. When I got the New Project dialog, I told it this was a C++ Project, and the indexing now works fine.
I still wish I could index files without having to attach a specific project type to it, but at least I found an answer.
Thanks for the help all.
Exit Eclipse. In workspace go to ".metadata/.plugins/org.eclipse.cdt.core" and delete everything in there.
in the project explorer panel, right click the project you want to re-index, then select index, then select the action you want
Indexing of files and variables under different flags is always complicated when we have a huge project, lot of files and more importantly lot of different build options. I prefer playing around with the Indexer option to help me browse the entire code.
You can find it : Project Properties>C/C++ General/Indexer.
You can choose "Enable project specific settings"
Then it's up to you to choose the options you want for your project.
For a particular build we can choose "Use active build configuration" so that only the files and MACROS are considered which are used by the build script.
Or Index all source files in the entire project.
I am using Eclipse Neon 3, here's the solution that worked for me :
go to File
New
Convert to C/C++ Autotools project
then select your project and finish.
It can take some time to finish indexing, it depends on your project size.
I have experienced problems with the indexer of Eclipse Luna when there was an unresolved friend declaration in the class declaration - it seems then that the indexer skipped indexing the rest of that class, and all references to it was shown as unresolved by the indexer.
Solution: removed the unresolved friend declaration (in my case, it was legacy code that was no longer needed).
Please try the following (my project is set up differently, so I am not sure this will work for you).
Go to Properties -> C/C++ General -> Paths and Symbols -> Source Location.
Do you see your source folder there?
I observe this behavior:
When I add a source folder and then exclude it from build, it disappears from the above list. After that the folder is no longer indexed. Re-adding it to "Source Location" solves the problem: the folder is now indexed; remains excluded from build (as intended); is visible among source locations.
I believe it is a bug -- excluding a source folder from build should not remove it from source locations list.
In Coocox IDE (Eclipse + gcc) the problem is resolved by going from file menu
Edit > Preferences > C/C++ / Indexer > Build configuration for Indexer set to Active build configuration and the rebuild the project (Ctrl R).
If the project is already converted to C/C++ and still the index is not working you can right click on the project and Index and rebuild. The project will start indexing right away.
I am using
Eclipse IDE for C/C++ Linux Developers
Version: Helios Service Release 2
Build id: 20110218-0911
I followed the suggestions above and in addition I had to mark all referenced projects (with in the work space) using project properties->Project references
The following has worked for me in Eclipse Neon:
New Project -> C/C++ -> Makefile project with existing code -> Next. Then Navigate to the code and finish the project creation. Indexing starts automatically.