How to set the user.home directory used by Eclipse? - eclipse

When Eclipse starts, it generates folders such as the workspace and the .eclipse folder which is found in the user folder in Windows environments.
While the location of the first one is easy to set (Eclipse asks you about the workspace location), I've got a lot of troubles setting the location I want for the .eclipse folder.
In fact, the problem comes from the fact that I have 2 different hard drives : C:/ and D:/.
I would like Eclipse to create his .eclipse folder in C:/Users/username. Instead, it creates it in D:/Users/username.
I don't find any way to force the location of the .eclipse folder. Adding "osgi.configuration.area=C:/Users/username\" in the eclipse.ini proved relevant partially : the eclipse configuration part of the .eclipse folder is located where I want, but other folders found in the .eclipse aren't moved, therefore Eclipse still creates a .eclipse in D:/.
I simply would like to find a correct line of code to put in the eclipse.ini (for example) in order to have Eclipse creating the files he automatically creates in C:/Users/username instead of D:/Users/username.

Related

How modify Eclipse locations to prevent write to user.home directory?

I have tried all different settings, and yes, I m aware of eclipse.ini and config.ini and also tried different command line arguments! Nothing solved my problem!
All attempts and still each time I run eclipse.exe it wants write to my userhome i.e. the .eclipse and .p2 folders.
I have tried with all settings bellow among others, in different combinations too:
-Dosgi.user.area=file:/c:/eclipse-conf/e46
-Dosgi.configuration.area=file:/c:/eclipse-conf/e46
-Dosgi.instance.area=file:/c:/eclipse-conf/e46
-Declipse.p2.data.area=file:/c:/eclipse-conf/e46/p2
-Dorg.eclipse.equinox.p2.configurationFolder=file:/c:/eclipse-conf/e46/p2
-Dorg.eclipse.equinox.p2.installFolder=file:/c:/eclipse-conf/e46/p2
-Dorg.eclipse.equinox.p2.reconciler.dropins.directory=file:/c:/eclipse-conf/e46/p2
-Dorg.eclipse.equinox.p2.cache=file:/c:/eclipse-conf/e46/p2
-Dorg.eclipse.equinox.p2.roaming=file:/c:/eclipse-conf/e46/p2
-Dorg.eclipse.equinox.p2.cache.shared=file:/c:/eclipse-conf/e46/p2
This did not help! Well it writes to /e46 and /e46/p2 folder but it also creates/writes to c:\users\mrsimplemind\.eclipse & .eclipseextension & .p2
Even if I manually create the folders before it will not help.
Now please anyone here had success to fully isolate eclipse configuration output?
The only way I achieved this was by changing the user.home but I don't like this workaround as there are stuff in the original "user.home" that will be needed in eclipse, e.g. .ssh , .git , .m2 maven etc. I don't want to keep duplicates of profile settings for each eclipse user.home
I just want to isolate eclipse, this should be configurable! I don't like the outputs to user.home .. It is not an option! I want to have control of what eclipse creates in what folders, for each eclipse installation.
(I can only tell from windows os, I don't know how if Eclipse on Mac works better with the settings above)
I dont use OOMPH installer, some comments below are misleading
The method I have tried to solve this problem has been nearly successful. Whether this is an answer for you will depend on your minimum acceptable level of quality.
If you are trying to prevent your Eclipse IDE from filling up your home drive, this technique will work (it has worked for me). It should not matter if Eclipse was installed by Oomph or from a plain zip, as nothing Oomph-related is modified in this solution.
If the requirement is that the user home p2 folder can be completely deleted and yet Eclipse still works without recreating that directory, no I have not been able to achieve that yet.
I am posting this as a partial solution, perhaps in the hope someone else can build upon it to figure out a better workaround. Obviously the perfect solution would be if eclipse had a configurable download location and the installer actually installed all software to only the location selected, but that requires the Eclipse developers to fix the "P2" component of the product. What follows is only a workaround.
Strategy
The premise is that the download pool folder always seems to be hardcoded into the config files to be under the home folder of the user that ran the eclipse installer. The essence of this workaround is to create a fake user home folder in the location of your choice, do a massive find-and-replace in the config files, and then force the Java system property to use that new folder as "user.home" which fools Eclipse into using it for its downloads.
Method
This was tested on Eclipse 4.7 Oxygen.3A on Mint Linux.
Extensive brain surgery of the Eclipse installation folder is needed.
Install Eclipse somewhere other than your user's home drive.
In this example the Oomph installer was given /media/LINAPPS/ubuntu-apps/eclipse-oxy as the install target, which then creates /media/LINAPPS/ubuntu-apps/eclipse-oxy/eclipse during the installation.
Start Eclipse at least once, then close it and make sure Eclipse is not running.
Create a new fake user home drive folder underneath the Eclipse folder.
In this example I created eclipse-oxy/eclipse/fakeHome
Copy the entire (hidden) p2 directory from your user home directory into the new fakeHome.
eg cp -R /home/$USER/.p2 /media/LINAPPS/ubuntu-apps/eclipse-oxy/eclipse/fakeHome/.p2
Go to the eclipse folder and edit the eclipse.ini in a text editor. Make these 2 changes:
set the line after --launcher.library to be the copy of the pool in the new location relative to the eclipse folder, eg : fakeHome/.p2/pool/...etc...
append a new system property setting to end of the file after all the other vm arguments, and set user.home to the new fake user home directory.
eg: -Duser.home=/media/LINAPPS/ubuntu-apps/eclipse-oxy/eclipse/fakeHome
Edit the file eclipse/configuration/org.eclipse.update/platform.xml. Find the first <site> entry and change the url attribute to be the new pool folder relative to the eclipse folder. eg: url="file:fakeHome/.p2/pool/"
Edit the file /media/LINAPPS/ubuntu-apps/eclipse-oxy/eclipse/configuration/org.eclipse.equinox.simpleconfigurator/bundles.info and again find and replace all references to you user home's p2 folder with the new p2 folder under the fakeUser. You could find over 1000 matches to replace here. It again seems to be possible to make these relative to the eclipse folder, so a path of "fakeHome/.p2/pool/....." will work.
Go to the new /eclipse/fakeHome/.p2 folder and edit both of the files there "pools.info" and "profiles.info". Again find any reference to your real user home and replace it with the path to the fakeUser folder. Use the full pathname (from root) for the pool location in both of these files.
Unpack, edit, and repack the latest profileRegistry. Find the folder
eclipse/fakeHome/.p2/org.eclipse.equinox.p2.engine/profileRegistry/_media_LINAPPS_ubuntu-apps_eclipse-oxy_eclipse.profile/. Now find the latest timestamped gz file in that folder. For example it might be called "1529736854441.profile.gz".
gunzip that .gz file. Edit the .profile file and again replace any mention of your real user home with the new fakeUser folder. For example in my installation one of the first property settings had to be changed to
<property name='org.eclipse.equinox.p2.cache' value='/media/LINAPPS/ubuntu-apps/eclipse-oxy/eclipse/fakeHome/.p2/pool'/>
Delete the old gz file, then gzip the profile into a gz, so it has replaced the old one.
I also edited the file /eclipse/fakeHome/.p2/org.eclipse.equinox.p2.core/cache/artifacts.xml and replaced the repository name with a reference to the new location inside fakeHome, but I am not sure this was necessary to get eclipse working.
Start eclipse.
Results
After doing the above, I tried to add Install New Software from the Help menu. After downloading lots of new plugins from Redhat and Spring, the new fakeHome pool occupies 900MB, but the original user home pool is still less than 400MB which is what it was as soon as eclipse had been installed. So it has been successful at moving the download cache of the updater and no files get updated in the old location, but two directories under .p2 still seem to have their timestamps touched.
If anyone finds this useful, or figures out how to improve it, please let me know.
This works on Windows 7, Eclipse Oxygen:
Install Eclipse, but DON'T launch it yet
Edit eclipse.ini and, underneath -vmargs, add an entry to change user home to be a shared folder:
e.g.
-vmargs
-Duser.home=C:\Development
Launch Eclipse. Should see ".eclipse", ".tooling", etc folders created in shared folder, and nothing created under your user folder.
As of Eclipse Java 2019-06 for Windows 10 64-bit
I added my eclipse.ini below:
-vmargs
-D"user.home=C:\your_path_here"
The 3 folders of .eclipse, .p2, & .tooling appeared after I started and then closed eclipse.
I am not sure when these are written into the new path, but it worked in my Windows 10.
Did you try adding the following line to eclipse.ini below -vmargs:
-Dosgi.configuration.area=#user.home/.someFolder
which will use .someFolder instead of .eclipse
or
-Dosgi.configuration.area=C:\path_to_desired_location\.eclipseJAVA

making a folder visible in eclipse project

I am trying to load tomcat 7 into eclipse using this tutorial.
When I unzipped to the folder associated with the project, the tomcat folder was loaded as a subfolder. I therefore dragged all the folders into the root folder of the new tomcat7 eclipse project. The only folder which eclipse would not move is the bin folder. Eclipse instead gives me a dialog box with the following error message: "The element 'bin' exists in the selected destination. You can either skip the conflicting element, skip all conflicting elements, or cancel the whole operation."
The problem is that there is no bin folder present. Eclipse does not show a bin folder in the tomcat7 project within eclipse. And the windows explorer view of the file system also does not show any folder named bin within the tomcat7 folder in the directory hierarchy associated with the workspace.
I feel that I need the contents of the bin folder in the place where eclipse can see and work with them. Can anyone show me how to move the contents of the bin folder into the place where eclipse will see them? Now, the bin folder is stuck as a subfolder within the tomcat subfolder within the tomcat7 project.
As your default Java Output Folder for the project, it's hidden in the Package Explorer since everything that goes there was either compiled from or copied from a visible Source Folder. Use the Navigator View when working at this low a level instead.

Eclipse does not show projects in workspace

I have opened Eclipse workspace that I transfered from another computer but it does not show any projects in package explorer (there should be a lot of them). Still project's folders are in workspace folder.
The new machine where I transfered the workspace runs Windows 7 that has the read-only folders issue (more here). That is all the folders that are created on that OS are read-only and that the read-only atribute cannot be removed in any way.
Eclipse originally refused to open the workspace at all saying that .metadata folder of the workspace is read only. After turning user control to the lowest level it opens the workspace but it acts as if it did not contain any projects. I think this is because Eclipse refuses to work with read-only folders and project folders are also read-only.
Did somebody have same problem? How did you solve it? Any suggestions are wellcome.
It is not enough to move your projects in the workspace path folder, you also need to import them. And because of they are in your path folder, you can't import them again because it will say you still have them in your workspace. Move them to another folder (for example in desktop), be sure your workspace folder is empty, and then try to import them from your temporary folder in desktop.

How to move .eclipse folder?

I am using Spring System Tool Suite. The IDE creates an additional folder named .eclipse in my #user.home folder. How can I move the .eclipse folder to somewhere else and make the Spring STS use the new path (instead of recreating and using a new .eclipse folder in #user.home)?
I didn't see an option to change that location by default (it happens when the install is read-only and a user needs a writable configuration area). You could alway try and pass in a better configuration area to osgi.configuration.area. See Setting the private configuration area for the suggested option and Runtime Options for more information in general.

Where does Eclipse store settings and plugins in userdir?

I've just installed a new Linux distro on my box and want to move my Eclipse home from the old /home/username/ to my new one. Because I changed the desktop, I don't want to copy all hidden folders from ~/. So which directories do I need copy in order to have all my installed plugins?
I've already copied ~/.eclipse/ and it definitely contains files related to the plugins but Eclipse won't load them. Any hints?
We've eventually found the directory containing all that stuff by accident. Somehow we broke it and Eclipse refused to start on my coworker's computer:-)
See ~/workspace/.metadata/.plugins or wherever your workspace resides.
As far as I know, Eclipse stores its plugins in its installation directory (eclipse). They might reside in eclipse/plugins or eclipse/dropins. You can copy the whole eclipse directory from your old box.