This might be considered a minor thing, but I'm curious how you typicially solve following situation (if this is even a common use case): We have a project with dozens of practical Launch-Configurations for everyday use. Depending on which part of the application you work with, different launch configurations are interesting. To filter these, we use the favourite setting of eclipse. Those, who are needed where added to favourites, others removed.
Unfortunatly the favourite state is written within the launch configuration file, so SVN recognizes changing the favourite state as a change, when synchronizing a project. Since everyone usually needs different launch configurations at a specific time, this isn´t considered a desired behaviour.
Is there any way to work around this? How do you typically manage your launch configurations for a project?
It is recommended to share only a few and only very important launch configurations that are marked as to be displayed in a favorites menu (see Common tab in the launch configuration):
To add a shared launch configuration to the personal favorites menu, you have following options:
Add the shared launch configuration to the favorites menu but do not commit the changed .launch file
Duplicate the launch configuration and change Save As to Local File (see Common tab)
Wrap the shared launch configuration in a new Launch Group launch configuration
Alternatively, launch configurations can also be shared in a separate repository, outside of the associated project.
Related
I frequently use the Eclipse "Open Type" dialog to quickly jump to classes. The problem is, as I work on more and more projects in parallel, i.e. tackling different bugs in the same source code, the dialog sorts multiple copies of the same class in different projects by how frequently they've been opened, which means that I have to look around for my current project and make sure to open that type. It's annoying, and often I forget to do it and find myself working on a class in a different project.
Is there a way to restrict the Open Type dialog to only show types from the project I am currently working in?
If "current project" changes infrequently enough, you can use the Working Set selector in the Open Type dialog. It's easy to change the Working Set to match your current context.
Another option is to close the projects you're not currently working with, which eliminates them from consideration in lots of places in the Eclipse UI.
If, however, what you consider "current project" changes very frequently (like every few minutes) then neither of these options is very practical.
I use IntelliJ IDEA and want that my class should be redeployed after I make changes. Eclipse can do this. How does this work in IDEA?
I know that in the run configuration there is "On frame deactivation" and I set it to "Update classes and resources", but this does not work.
Do you hit the "redeploy" button every time you made a change in your class?
There are limitations to class reload, in any Java project. It also depends on what you're using to perform this reload (if you're using a servlet container, etc).
By default, IntelliJ uses HotSwap for its reloading. There are some limitations to it though:
At the moment due to original limitations of Java SDK the HotSwapping is possible ONLY if a method body is altered. In all other cases (like changing method or class signature), the class reload is impossible and the corresponding error message appears.
That said, the instructions for configuring your application to reload can be found here.
To configure reloading behavior
On the main menu, choose File | Settings , and then expand the Debugger node.
Open HotSwap page.
Click one of the radio buttons in the group Reload classes after compilation. You can opt to always reload classes, reload after
confirmation, or never do it.
Take a look at HotswapAgent configuration for InteliJ IDEA
I want to manually test some features of a plugin I'm developing. To do so, it'd be nice to be able to create some projects in the test Eclipse instance and have them stay throughout all my testing season. At the moment it seems that Eclipse insists on clearing the Eclipse Plugin workspace. Is it possible to invert its default behavior?
Thanks
Open up the launch configuration for this launch
On the Main tab, unclick Clear so the workspace remains across launches (alternatively, you can select Ask for confirmation... so you can choose each time).
As far as I know, there is no way to mark this as the default.
I am currently working on desktop software based on java.It's quite a big code base (more than 40 jar files).
I wish to provide an automatic update functionality. The desktop software constantly checks one back end system to see if there are new versions of the jar files available.
The problem now is: How to replace the updated jar files?
If you deploy your application using Java Webstart (JNLP), you get this mechanism almost for free...
From http://mindprod.com/jgloss/javawebstart.html
The key benefit for Java Web Start is automatic update without having to download the entire program every time.
Easiest would be to check for updates on each startup, download the updates and then launch your application. I think this is the way that Java Web Start works (see aioobes answer).
More complex would be to use either the netbeans or eclipse framework for your application. Both are rather complex and you will have to rewrite your application to work with them. This solution supports live updates.
As far as I am aware there is no easy way to update a running application. It is possible to load new versions of a class with a different classloader, but not possible to unload old versions while they are still referenced.
You can make a little server and a launcher which downloads the newest version, replaces the old one, and starts the jar with:
Runtime.getRuntime().exec("java yourjar -jar");
And you terminate the launcher with:
System.exit(1)
You can also serialize down your state (keep it in memory) and then create a new ClassLoader instance pointing to the new .jar files. Then serialize up your state again using this new classloader. You have just changed the underlaying .jars within a executing product.
Please note that you do not need to change the classloader for everything only for the part that is actually using the .jar files. This can be tricky to conclude what parts that are. And you might get nasty linking errors if done wrongly. So..
.. to keep it simple, use WebStart or a preloader that updates the .jars and then starts the main app (basically what WebStart does for you).
A reason for rolling your own, is that you can use your own format for the .jars, encryption, other packing formats etc.
After reading some answers to many auto-update questions, I thought of a solution. This is how I would implement a secure auto-update for a Java/Kotlin jar application.
Assumption: the installer will contain two jars: a launcher and the main application. Any shortcuts created will point to the launcher, but still be the name of the application. The release will contain the main application and the installer.
The launcher is launched first:
First check if an update has already been downloaded as app_name_update.jar
if an update has been downloaded, rename app_name_update.jar to app_name.jar
Start app_name.jar
This part does not have to be in the launcher, but it's preferred as to not slow down the main application: at this point, the launcher should check for an update (e.g. GitHub releases API) and download it to {CWD}/unverified_app_name_update.jar.
Compare the hash of unverified_app_name_update.jar to an online location containing hashes for all published versions. hashes.txt would be an example found in the same github repository. If the software is open-source, GPG signed commits is a must and the launcher should check if the latest update is a verified commit! If its a proprietary application, keep the hashes.txt at a separate URL from the release where your company does not control the infrastructure (e.g. GitHub).
Main app launched:
No need to check for updates unless updates are mandatory, in which case check for update -> if update found, start loading animation "updating" while you can detect that the launcher is still running. Ensure that the launcher has no race condition while loops!
I found ready project to solve automatically updating.
You can update your app, in your cases you can update jars and resources of your desktop app. The idea of the this is next: wrap you app with starter which can control updating and running you app. In details you can find here.
I have several different processes within a single project that I work on. I am constantly opening and closing tabs(java files) in the code editor for that particular process. Each process almost always uses the same java files.
I was wondering if it is possible to save what files are opened as part of the working set so I can select what working set I want and have all the java files open that I will need to work with. Currently the working set just sets the tree to these files, but I am looking to also have it open the files I need.
I hope this makes sense...
Mylyn should be your answer here.
Mylyn is a task-focused interface for Eclipse that makes working with very large workspaces as easy as working with small ones.
Mylyn extends Eclipse with mechanisms for keeping track of the tasks that you work on.
Mylyn monitors your work activity on those tasks to identify information relevant to the task-at-hand. Mylyn monitors Eclipse and captures your interaction in a task context.
System artifacts such as files, types, methods, and fields get assigned a degree-of-interest based on how recently and frequently you interact with them.
This results in uninteresting elements being filtered from view within Eclipse, allowing you to focus in on what is important.
Following Saheed's answer, don't miss CodeKiller's comment:
You can
Activate the task to reopen all files and
Deactivate the task to close all the files.
Bookmarks (mentioned here by user1039663) is a valable alternative.
Eclipse provides multiple ways of structuring the IDE desktop:
Perspectives: Customization of the positions of open and closed views and editors. You can copy and rename existing perspectives like the Java perspective and suit them to your needs by customizing them. See the Window menu or right-click on the perspective icon in the upper right corner
Task Management Tools like Mylyn: see answer by VonC
Multiple Windows: You can open new windows and move them to your second monitor. Select Window > New Window to open a new window. Each window keeps track of its own open editors.
Multiple Instances of Eclipse: You can always use multiple workspaces and multiple instances of Eclipse. However, this is only recommended when working on different projects, as both instances would overwrite each others files when rebuilding.
Hotkeys: By using shortcuts like Ctrl-T and Alt-Left/Alt-Right and Ctrl-Q you can quickly jump to previous locations where you have edited source files. This is a great help in navigating the open workspace.
Extended VS Presentation provides capabilities to save sessions.
Unluckily, it only works with Eclipse 3.1 to 3.8:
Project page at Eclipse Marketplace
The accepted answer tells us which tool could be used but does not provide a quick and dirty explanation on how to use it.
In my case, I hadn't finished researching a large code base but I needed to save my progress so I could return to it later hence the need to save all open tabs using Mylyn.
If you already have Mylyn installed, navigate to Window -> Show View -> Task List to view the list of tasks. If you've never used it before, the list will be empty.
Right-click inside the Task List view then New -> Category to create a new category. Right-click again New -> Task to create a new task.
Double-click on the task you just created then click on the Context tab at the bottom left of the view.
Now navigate to each tab which you would like Mylyn to save by clicking on the tab name. Notice how an entry for the source file for that tab is added in Context tab of the Task List view.
Once you've cycled through all the tabs you'd like to save, you can confirm they were saved by closing each one and double-clicking the source file in the Task List to restore the tab.
I've edited this answer as per below comment (include essential parts of answer in this post).
Yes, you can save off groups of tabs in Eclipse by installing this Session Manager plug-in.
I've wanted this functionality in Eclipse as well. I recently wrote a feature and have been successfully using it for a few months now. It is a new OSGi type extension and works with Eclipse Neon and above.
Here's how to install it.
In Eclipse, go to Help → Install New Software
Click “Add”, enter a name like “Editor Sessions” and the following URL.
http://spillikinaerospace.com/eclipseInstall/
Unckeck “Group items by category” to see the feature.
Check the box that says “Editor Sessions Manager” and click Next.
Read and agree to the short license agreement.
Click the remaining install buttons.
Allow Eclipse to restart.
Full set of instructions are here: http://chrishull.com/projects/eclipse/
Please give it a try and send comments. I've found it a very useful tool as I work with several Eclipse projects at once and need to recall file groups.
Hope you enjoy it;
-Chris
In addition to all mentioned... Did you try Bookmarks? You can save multiple bookmarks into one set, there are bookmark sets management option and you can add descriptions with prefixes to group bookmarks on the same set. Finally and more important: you can select multiple bookmarks, select goto and multiple editors will be opened at once.
You need a Macro. Searching using this term at Eclipse plugin sites like eclipseplugincentral.com and so on must yield enough suggestions, for example Practically Macro. Good luck.