CINXE.COM
Developing ImageJ2 in Eclipse
<!DOCTYPE html> <html> <head> <title>Developing ImageJ2 in Eclipse</title> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=3" /> <meta content="ImageJ Wiki" property="og:site_name"> <meta content="Developing ImageJ2 in Eclipse" property="og:title"> <meta content="article" property="og:type"> <meta content="The ImageJ wiki is a community-edited knowledge base on topics relating to ImageJ, a public domain program for processing and analyzing scientific images, and its ecosystem of derivatives and variants, including ImageJ2, Fiji, and others." property="og:description"> <meta content="https://imagej.github.io/develop/eclipse" property="og:url"> <meta content="https://imagej.github.io/media/icons/imagej2.png" property="og:image"> <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"> <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"> <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"> <link rel="manifest" href="/site.webmanifest"> <link rel="mask-icon" href="/safari-pinned-tab.svg" color="#5bbad5"> <meta name="msapplication-TileColor" content="#da532c"> <meta name="theme-color" content="#ffffff"> <link rel="stylesheet" href="/assets/css/lightbox.min.css" /> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/instantsearch.css@7/themes/algolia-min.css"/> <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/dygraphs@2.1.0/dist/dygraph.min.js"></script> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/dygraphs@2.1.0/dist/dygraph.min.css" /> <link rel="stylesheet" href="/assets/css/main.css" /> <link rel="stylesheet" href="/assets/css/layout.css"/> <link rel="stylesheet" href="/assets/css/includes.css" /> <link rel="stylesheet" href="/assets/css/timeline.css"/> <link rel="stylesheet" href="/assets/css/dock.css"/> <noscript><link rel="stylesheet" href="/assets/css/noscript.css" /></noscript> <link rel="stylesheet" href="/assets/css/page.css" /> </head> <body class="is-preload"> <!-- Top bar --> <section id="top-bar"> <a href="/"><img id="site-logo" src="/media/icons/imagej2.png"></a> <div id="search-panel"> <div id="search-box"></div> </div> </section> <!-- Page-info --> <div class="page-info"> <a href="https://github.com/imagej/imagej.github.io/commits/main/_pages/develop/eclipse.md">Page history</a> <a href="https://github.com/imagej/imagej.github.io/edit/main/_pages/develop/eclipse.md">Edit this page</a> <a href="/editing">How do I edit this website?</a><br><a href="https://imagej.net/imagej-wiki-static/Developing_ImageJ_in_Eclipse">Original MediaWiki page</a></div> <section id="left-column" class="sidebar dock"> <!-- Menu --> <div class="menu dockable"> <div class="drag-handle"></div><h3>ImageJ Docs</h3> <ul> <li><a href="/downloads">Download</a></li> <li><details><summary>Learn</summary><ul> <li><details><summary><a href="/learn">ImageJ Basics</a></summary><ul> <li><a href="/tutorials">Tutorials</a></li> <li><a href="/learn/user-guides">User Guides</a></li> <li><a href="/learn/keyboard-shortcuts">Keyboard Shortcuts</a></li> <li><a href="/learn/tips-and-tricks">Tips and Tricks</a></li> <li><a href="/learn/troubleshooting">Troubleshooting</a></li> <li><a href="/learn/faq">Frequently Asked Questions</a></li> <li><details><summary><a href="/platforms">Supported Platforms</a></summary><ul> <li><a href="/platforms/windows">Windows</a></li> <li><a href="/platforms/macos">MacOS</a></li> <li><a href="/platforms/linux">Linux</a></li> <li><a href="/platforms/pi">Raspberry Pi</a></li> <li><a href="/platforms/android">Android</a></li> </ul></details></li> <!-- Learn/ImageJ Basics/Supported Platforms --> <li><details><summary><a href="/formats">File Formats</a></summary><ul> <li><a href="/formats/bio-formats">Bio-Formats</a></li> <li><a href="/formats/video">Video formats</a></li> <li><a href="/formats/quicktime">QuickTime</a></li> <li><a href="/formats/tiff">TIFF</a></li> <li><a href="/formats/pdf">PDF</a></li> <li><a href="/formats/dicom">DICOM</a></li> <li><a href="/formats/lsm">Zeiss LSM</a></li> <li><a href="/formats/olympus">Olympus VSI</a></li> <li><a href="/formats/lurawave">Opera Flex</a></li> <li><a href="/formats/fib-sem">FIB-SEM</a></li> </ul></details></li> <!-- Learn/ImageJ Basics/File Formats --> </ul></details></li> <!-- Learn/ImageJ --> <li><details><summary><a href="/imaging">Scientific Imaging</a></summary><ul> <li><a href="/imaging/principles">Principles of Scientific Imaging</a></li> <li><a href="/imaging/annotating-images">Annotating Images</a></li> <li><a href="/imaging/colocalization-analysis">Colocalization</a></li> <li><a href="/imaging/color-image-processing">Color Image Processing</a></li> <li><a href="/imaging/deconvolution">Deconvolution</a></li> <li><a href="/imaging/image-intensity-processing">Image Intensity Processing</a></li> <li><a href="/imaging/particle-analysis">Particle Analysis</a></li> <li><a href="/imaging/registration">Registration</a></li> <li><a href="/imaging/segmentation">Segmentation</a></li> <li><a href="/imaging/stack-slice-manipulations">Stack-slice Manipulations</a></li> <li><a href="/imaging/t-functions">T-functions</a></li> <li><a href="/imaging/tracking">Tracking</a></li> <li><a href="/imaging/visualization">Visualization</a></li> <li><a href="/imaging/z-functions">Z-functions</a></li> </ul></details></li> <!-- Learn/Scientific Imaging --> </ul></details></li> <!-- Learn --> <li><details open><summary><a href="/plugins">Extend</a></summary><ul> <li><a href="/list-of-extensions">List of Extensions</a></li> <li><details><summary><a href="/update-sites">Update Sites</a></summary><ul> <li><a href="/list-of-update-sites">List of Update Sites</a></li> <li><a href="/update-sites/following">Following an Update Site</a></li> <li><a href="/update-sites/setup">Creating an Update Site</a></li> <li><a href="/update-sites/tos">Terms of Service</a></li> <li><a href="/update-sites/automatic-uploads">Automatic Upload</a></li> <li><a href="/update-sites/core-uploads">Uploading to Core Sites</a></li> <li><a href="/update-sites/faq">Update Sites FAQ</a></li> <li><a href="/update-sites/stats">Statistics</a></li> </ul></details></li> <!-- Extend/Update Sites --> <li><details><summary><a href="/scripting">Scripting</a></summary><ul> <li><a href="/scripting/basics">Scripting Basics</a></li> <li><a href="/scripting/script-editor">Script Editor</a></li> <li><a href="/scripting/parameters">Parameters</a></li> <li><a href="/scripting/user-input">User Input</a></li> <li><a href="/scripting/auto-imports">Auto Import</a></li> <li><a href="/scripting/templates">Templates</a></li> <li><a href="/scripting/batch">Batch Processing</a></li> <li><a href="/scripting/headless">Running Headlessly</a></li> <li><a href="/scripting/comparisons">Scripting Comparisons</a></li> <li><a href="/scripting/toolbox">Toolbox</a></li> <li><details><summary>Languages</summary><ul> <li><a href="/scripting/beanshell">BeanShell Scripting</a></li> <li><a href="/scripting/groovy">Groovy Scripting</a></li> <li><a href="/scripting/macro">ImageJ Macro</a></li> <li><a href="/scripting/javascript">JavaScript</a></li> <li><a href="/scripting/clojure">Lisp (Clojure)</a></li> <li><a href="/scripting/matlab">MATLAB</a></li> <li><a href="/scripting/jython">Python (Jython)</a></li> <li><a href="/scripting/python">Python (native)</a></li> <li><a href="/scripting/renjin">R (Renjin)</a></li> <li><a href="/scripting/jruby">Ruby (JRuby)</a></li> <li><a href="/scripting/scala">Scala Scripting</a></li> </ul></details></li> <!-- Extend/Scripting/Languages --> </ul></details></li> <!-- Extend/Scripting --> <li><details open><summary><a href="/develop">Development</a></summary><ul> <li><a href="/develop/philosophy">Philosophy</a></li> <li><a href="/develop/architecture">Architecture</a></li> <li><a href="/develop/source">Source code</a></li> <li><a href="/develop/project-management">Project management</a></li> <li><a href="/develop/coding-style">Coding style</a></li> <li><a href="/develop/javadoc">Using Javadoc</a></li> <li><a href="/develop/debugging">Debugging</a></li> <li><a href="/develop/wish-list">Wish list</a></li> <li><details open><summary>Tools</summary><ul> <li><a href="/develop/github">GitHub</a></li> <li><a href="/develop/maven">Maven</a></li> <li><a href="/develop/ci">CI/CD</a></li> <li><a href="/develop/dotfiles">Dotfiles</a></li> <li><details open><summary><a href="/develop/ides">IDEs</a></summary><ul> <li><a class="current-page">Eclipse</a></li> <li><a href="/develop/netbeans">NetBeans</a></li> <li><a href="/develop/intellij">IntelliJ IDEA</a></li> <li><a href="/develop/command-line">Command Line</a></li> </ul></details></li> </ul></details></li> <!-- Extend/Development/Tools --> <li><details><summary>Guides</summary><ul> <li><a href="/develop/plugins">Writing plugins</a></li> <li><a href="/develop/improving-the-code">Contributing to a plugin</a></li> <li><a href="/develop/releasing">Development lifecycle</a></li> <li><a href="/develop/building-a-pom">Building a POM</a></li> <li><a href="/develop/debugging-exercises">Hands-on debugging</a></li> <li><a href="/develop/writing-ops">Adding new ops</a></li> <li><a href="/develop/formats">Adding new formats</a></li> <li><a href="/develop/native-libraries">Using native libraries</a></li> <li><a href="/develop/tips">Tips for developers</a></li> <li><a href="/develop/cpp-tips">Tips for C++ developers</a></li> <li><a href="/develop/ij1-plugins">ImageJ 1.x plugins</a></li> <li><a href="/develop/versioning">Versioning</a></li> <li><a href="/develop/logging">Logging</a></li> <li><a href="/develop/uber-jars">Uber-JARs</a></li> </ul></details></li> <!-- Extend/Development/Guides --> <li><details><summary><a href="/develop/git">Git</a></summary><ul> <li><a href="/develop/git/eclipse">Git in Eclipse (EGit)</a></li> <li><a href="/develop/git/mini-howto">Git mini howto</a></li> <li><a href="/develop/git/workshop">Git workshop</a></li> <li><a href="/develop/git/conflicts">Git conflicts</a></li> <li><a href="/develop/git/topic-branches">Git topic branches</a></li> <li><a href="/develop/git/notes">Git notes</a></li> <li><a href="/develop/git/reflogs">Git reflogs</a></li> <li><a href="/develop/git/submodules">Git submodules</a></li> <li><a href="/develop/git/pinpoint-regressions">How to pinpoint regressions</a></li> <li><a href="/develop/git/publish-a-repository">How to publish a git repository</a></li> <li><a href="/develop/git/extract-a-subproject">How to extract a subproject</a></li> </ul></details></li> <!-- Extend/Development/Git --> </ul></details></li> <!-- Extend/Development --> </ul></details></li> <!-- Extend --> <li><details><summary><a href="/contribute">Contribute</a></summary><ul> <li><a href="/contribute/citing">Citing</a></li> <li><a href="/people">Contributors</a></li> <li><a href="/orgs">Organizations</a></li> <li><a href="/contribute/governance">Governance</a></li> <li><a href="/contribute/funding">Funding</a></li> <li><a href="/contribute/fiji">Contributing to Fiji</a></li> <li><details><summary><a href="/licensing">Licensing</a></summary><ul> <li><details><summary><a href="/licensing/open-source">Open Source</a></summary><ul> <li><a href="/licensing/apache">Apache</a></li> <li><a href="/licensing/bsd">BSD</a></li> <li><a href="/licensing/epl">EPL</a></li> <li><a href="/licensing/gpl">GPL</a></li> <li><a href="/licensing/lgpl">LGPL</a></li> <li><a href="/licensing/mit">MIT</a></li> <li><a href="/licensing/public-domain">Public domain</a></li> <li><a href="/licensing/big">BIG</a></li> </ul></details></li> <!-- Contribute/Licensing/Open Source --> <li><a href="/licensing/closed-source">Proprietary</a></li> </ul></details></li> <!-- Contribute/Licensing --> <li><details><summary><a href="/editing">Editing the Wiki</a></summary><ul> <li><a href="/editing/advanced">Advanced Editing</a></li> <li><a href="/editing/buttons">Buttons</a></li> <li><a href="/editing/citations">Citations</a></li> <li><a href="/editing/code">Source Code</a></li> <li><a href="/editing/debugging">Debugging</a></li> <li><a href="/editing/headers">Headers</a></li> <li><a href="/editing/icons">Icons</a></li> <li><a href="/editing/images">Images</a></li> <li><a href="/editing/keys">Keyboard Shortcuts</a></li> <li><a href="/editing/linking">Linking</a></li> <li><a href="/editing/math">Math Expressions</a></li> <li><a href="/editing/menu-paths">Menu Paths</a></li> <li><a href="/editing/navigation">Navigation</a></li> <li><a href="/editing/notices">Notices</a></li> <li><a href="/editing/people">People</a></li> <li><a href="/editing/pitfalls">Pitfalls</a></li> <li><a href="/editing/quizzes">Quizzes</a></li> <li><a href="/editing/statbox">Statbox</a></li> <li><a href="/editing/symbols">Symbols</a></li> <li><a href="/editing/tables">Tables</a></li> <li><a href="/editing/timelines">Timelines</a></li> <li><a href="/editing/tooltips">Tooltips</a></li> <li><a href="/editing/videos">Videos</a></li> <li><a href="/editing/whitespace">Whitespace</a></li> </ul></details></li> <!-- Contribute/Editing the Wiki --> </ul></details></li> <!-- Contribute --> <li><details><summary><a href="/discuss">Discuss</a></summary><ul> <li><a href="/discuss/bugs">Reporting Issues</a></li> <li><a href="/discuss/mailing-lists">Mailing Lists</a></li> <li><a href="/discuss/chat">Chat</a></li> </ul></details></li> <!-- Discuss --> <li><details><summary>Explore</summary><ul> <li><a href="/news">News</a></li> <li><details><summary><a href="/events">Events</a></summary><ul> <li><a href="/events/presentations">Presentations</a></li> <li><a href="/events/conferences">Conferences</a></li> <li><a href="/events/hackathons">Hackathons</a></li> <li><a href="/events">More...</a></li> </ul></details></li> <!-- Discuss/Events --> <li><details><summary><a href="/libs">Libraries</a></summary><ul> <li><a href="/libs/imagej-ops">ImageJ Ops</a></li> <li><a href="/libs/imagej-common">ImageJ Common</a></li> <li><a href="/libs/imagej-legacy">ImageJ Legacy</a></li> <li><a href="/libs/scijava">SciJava</a></li> <li><a href="/libs/scifio">SCIFIO</a></li> <li><details><summary><a href="/libs/imglib2">ImgLib2</a></summary><ul> <li><a href="/libs/imglib2/getting-started">Getting Started</a></li> <li><a href="/libs/imglib2/accessors">Accessors</a></li> <li><a href="/libs/imglib2/accessibles">Accessibles</a></li> <li><a href="/libs/imglib2/examples">Examples</a></li> <li><a href="/libs/imglib2/workshop-introductory">Introductory Workshop</a></li> <li><a href="/libs/imglib2/workshop-advanced">Advanced Workshop</a></li> <li><a href="/libs/imglib2/matlab">ImgLib2 images in MATLAB</a></li> <li><a href="/libs/imglib2/benchmarks">Benchmarks</a></li> <li><a href="/libs/imglib2/faq">FAQ</a></li> <li><a href="/libs/imglib2/developing">Developing ImgLib2</a></li> <li><a href="/libs/imglib2/discussion">ImgLib2 Discussion</a></li> </ul></details></li> <!-- Explore/Libraries/ImgLib2 --> <li><a href="/libs">More...</a></li> </ul></details></li> <!-- Explore/Libraries --> <li><details><summary><a href="/software">Software</a></summary><ul> <li><a href="/software/nih-image">NIH Image</a></li> <li><a href="/software/imagej">ImageJ</a></li> <li><a href="/software/imagej2">ImageJ2</a></li> <li><a href="/software/fiji">Fiji</a></li> <li><a href="/software">More...</a></li> </ul></details></li> <!-- Explore/Software --> </ul></details></li> <!-- Explore --> </ul> </div> </section> <section id="right-column" class="sidebar dock"> <!-- Vital stats --> <!-- Table of contents --> <div id="toc" class="toc menu dockable"> <div class="drag-handle"></div> <h3>Page contents</h3> <ul data-toc="#content" data-toc-headings="h1,h2,h3,h4,h5,h6"></ul> </div> </section> <!-- Page title --> <div class="container"> <header class="major special"> <a class="project-icon shadowed-box" href="/software/imagej2"><span class="tooltip"><img src="/media/icons/imagej2.png"><span class="tooltiptext" style="top: 80%; left: 25%; width: 20em">This page describes content relating to the ImageJ2 platform. Click the logo for details.</span></span></a> <h1>Developing ImageJ2 in Eclipse</h1> <span class="project-counterweight"> </span> </header> </div> <!-- Nav bar --> <!-- Main content --> <section id="page" class="main style1"> <div class="container"> <div class="box alt"></div> <div id="content" class="page-content"> <div class="notice" style="font-size: 2; background: #ebf2f8; border-left: 10px solid #67a1fe"><div class="notice-icon"><img src="/media/icons/info.svg" width="32"></div><div class="notice-content"><p>The content of this page has not been vetted since shifting away from MediaWiki. If you’d like to help, check out the <a href="/events/wiki-grand-opening/how-to-help">how to help guide</a>!</p> </div> </div> <p>This article explains how to install, configure and use Eclipse to develop <a href="/software/imagej2">ImageJ2</a> <a href="/develop/architecture#definitions">components</a> and <a href="/plugins">plugins</a>. Directions correspond to Eclipse 4.4 Luna, and may need adjustment for other versions.</p> <h1 id="initial-setup">Initial setup</h1> <h2 id="install-the-java-development-kit">Install the Java Development Kit</h2> <ul> <li>To be safe, since you may need JavaFX (for the GUI) download <a href="https://www.azul.com/downloads/?version=java-8-lts&package=jdk-fx">Java8 JDK with FX from Azul</a>. Make sure to scroll down and choose the appropriate Operating System (Windows, Linux, etc) and Architecture (x86 64 bit for most systems, though older systems may be 32 bit). Pay attention to where you install this, as you will need to find it again within Eclipse!</li> <li>Alternatively, download and install <a href="https://www.azul.com/downloads/?package=jdk">OpenJDK</a>.</li> </ul> <h2 id="install-and-configure-eclipse">Install and configure Eclipse</h2> <h3 id="install-eclipse">Install Eclipse</h3> <ul> <li>Download “Eclipse IDE for Java Developers” from the <a href="http://www.eclipse.org/downloads/">Eclipse website</a>.</li> </ul> <div class="notice" style="font-size: 2; background: #ffcccb; border-left: 10px solid #f57900"><div class="notice-icon"><img src="/media/icons/warning.png" /></div><div class="notice-content"><p>It is <strong>important</strong> to choose “Eclipse IDE for Java Developers” because it contains Maven support built-in. Otherwise, you will have to <a href="http://eclipse.org/m2e/">install the M2E plugin manually</a>.</p> </div> </div> <ul> <li>Unpack the archive to a location of your choice.</li> </ul> <h3 id="configure-eclipse-for-your-platform">Configure Eclipse for your platform</h3> <div class="tab"> <button class="tablinks" onclick="openTab(event, 'windows')">Windows</button> <button class="tablinks" onclick="openTab(event, 'macos')">MacOS</button> <button class="tablinks" onclick="openTab(event, 'linux')">Linux</button> </div> <div id="windows" class="tabcontent"> <p><a href="/platforms/windows"><img alt="Windows" src="/media/icons/windows.svg" width="32px" /></a><br /></p> <p><strong>Avoid permissions issues.</strong> We recommend installing Eclipse <em>outside</em> of the <code class="language-plaintext highlighter-rouge">Program Files</code> directory. E.g.: <code class="language-plaintext highlighter-rouge">C:\Users\frood\Programs\eclipse</code>, where <code class="language-plaintext highlighter-rouge">C:\Users\frood</code> is your user directory.</p> <p><strong>Configure Eclipse.</strong> After installing Eclipse, you will need to configure it to know about your JDK.</p> <p>Use Wordpad to edit the <code class="language-plaintext highlighter-rouge">eclipse.ini</code> file in your Eclipse installation (e.g., <code class="language-plaintext highlighter-rouge">C:\Users\frood\Programs\eclipse</code>). (Do not use Notepad, because it will not handle the Unix-style line breaks properly.) Carefully follow <a href="http://wiki.eclipse.org/Eclipse.ini#specifying-the-jvm">these instructions</a> to specify the proper JDK. Then save the file and quit Wordpad.</p> <p>Now update Eclipse’s JRE to be JDK-aware:</p> <ul> <li>Launch Eclipse</li> <li>From the menu choose <span class="bc"><span>Window</span> › <span>Preferences</span></span></li> <li>Select <span class="bc"><span>Java</span> › <span>Installed JREs</span></span></li> <li>Click Search…, navigate to your JDK installation folder (e.g., <code class="language-plaintext highlighter-rouge">C:\Program Files\Java\jdk1.8.0_11</code>) and click OK</li> <li>Check the box next to the JRE that appears and click OK</li> </ul> </div> <div id="macos" class="tabcontent"> <p><a href="/platforms/macos"><img alt="MacOS" src="/media/icons/macos.png" width="48px" /></a><br /></p> <p><strong>Understand Java 6 vs. Java 8.</strong> Eclipse should work on macOS with no further configuration. However, we recommend reading the <a href="/learn/faq#macos">macOS section of the FAQ</a>, as there are several Java-related issues on macOS.</p> </div> <div id="linux" class="tabcontent"> <p><a href="/platforms/linux"><img alt="Linux" src="/media/icons/linux.svg" width="48px" /></a><br /></p> <p><strong>Avoid permissions issues.</strong> We recommend installing to <code class="language-plaintext highlighter-rouge">$HOME/eclipse</code>.</p> <p><strong>Do not use a package manager.</strong> For several reasons, we do not recommend installing Eclipse from a package manager. You may not get a new enough version of Eclipse (we recommend 4.3+), you will not get the Java Developers version that includes the M2E plugins, and you will likely have trouble installing additional plugins due to the permissions issues with the system-wide installation.</p> <p><strong>Adjust the Eclipse font size.</strong> Sometimes it is desirable to change the Eclipse font size. To do so, create a GTK configuration file (e.g. <code class="language-plaintext highlighter-rouge">~/.gtkrc-eclipse</code>) and place the following lines there:</p> <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>style "eclipse" { font_name = "Sans Condensed 8" } class "GtkWidget" style "eclipse" </code></pre></div> </div> <p>Then run eclipse using this command: <code class="language-plaintext highlighter-rouge">GTK2_RC_FILES=~/.gtkrc-eclipse eclipse</code></p> </div> <h2 id="clone-the-source-code">Clone the source code</h2> <p>Using your <a href="http://git-scm.com/downloads/guis">Git client of choice</a>, clone the source code which interests you:</p> <ul> <li>If you want to work on an existing project, see the <a href="/develop/source">list of sources</a>.</li> <li>If you are creating your own project, see the <a href="/develop/building-a-pom">building a pom</a> guide.</li> </ul> <h2 id="import-the-source-code">Import the source code</h2> <ol> <li>Choose <span class="bc"><span>File</span> › <span>Import</span></span> from the Eclipse menu</li> <li>Select “Existing Maven Projects” and click Next</li> <li>Browse to the folder where you cloned the project source code</li> <li>Click Finish</li> </ol> <p>Eclipse will import and automatically build the project(s). There should not be any build errors, but it is normal to see a large number (often hundreds) of warnings. These mostly come from Java-1.4-style code or unnecessary imports, variables or methods in the sources of authors who do not use an IDE and thus have no automatic assistance at cleaning up. All these warnings can be ignored, having no effect on the functionality of the code.</p> <p>If you’re having trouble, how to import and build your Maven + Eclipse project, follow this video: <a href="https://www.youtube.com/watch?v=YIWpoBnnLio">How To Setup and Make a Fiji Plugin</a></p> <h1 id="keyboard-shortcuts">Keyboard shortcuts</h1> <table style="width: auto"> <tbody> <tr><td colspan="2" style="text-align: center"><strong>Navigation</strong></td></tr> <tr> <td style="text-align: right"><span class="tooltip" style="padding-bottom: 4px"><kbd class="key">⌃ Ctrl / ⌘</kbd><span class="tooltiptext" style="top: 80%; left: 25%; width: 20em"><span class="ctlcmd"> <span><kbd class="key">⌃ Ctrl</kbd></span> <span>on a PC</span> <span><kbd class="key">⌘ command</kbd></span> <span>on a Mac</span> </span></span></span> + <kbd class="key">⇧ Shift</kbd> + <kbd class="key">T</kbd></td> <td>Open a Java class from the workspace</td> </tr> <tr> <td style="text-align: right"><span class="tooltip" style="padding-bottom: 4px"><kbd class="key">⌃ Ctrl / ⌘</kbd><span class="tooltiptext" style="top: 80%; left: 25%; width: 20em"><span class="ctlcmd"> <span><kbd class="key">⌃ Ctrl</kbd></span> <span>on a PC</span> <span><kbd class="key">⌘ command</kbd></span> <span>on a Mac</span> </span></span></span> + <kbd class="key">⇧ Shift</kbd> + <kbd class="key">R</kbd></td> <td>Open a file from the workspace</td> </tr> <tr> <td style="text-align: right"><kbd class="key">F3</kbd></td> <td> Jump to selected class<br /> (to edit the code, see <a href="/develop/architecture#using-snapshot-couplings-during-development">snapshot coupling</a>) </td> </tr> <tr> <td style="text-align: right; "><span class="tooltip" style="padding-bottom: 4px"><kbd class="key">⌃ Ctrl / ⌘</kbd><span class="tooltiptext" style="top: 80%; left: 25%; width: 20em"><span class="ctlcmd"> <span><kbd class="key">⌃ Ctrl</kbd></span> <span>on a PC</span> <span><kbd class="key">⌘ command</kbd></span> <span>on a Mac</span> </span></span></span> + <kbd class="key">O</kbd></td> <td>Show superclass/subclass hierarchy</td> </tr> <tr> <td style="text-align: right"><span class="tooltip" style="padding-bottom: 4px"><kbd class="key">⌃ Ctrl / ⌘</kbd><span class="tooltiptext" style="top: 80%; left: 25%; width: 20em"><span class="ctlcmd"> <span><kbd class="key">⌃ Ctrl</kbd></span> <span>on a PC</span> <span><kbd class="key">⌘ command</kbd></span> <span>on a Mac</span> </span></span></span> + <kbd class="key">T</kbd></td> <td>Show implementations of interface or class</td> </tr> <tr> <td style="text-align: right"><span class="tooltip" style="padding-bottom: 4px"><kbd class="key">⌃ Ctrl / ⌘</kbd><span class="tooltiptext" style="top: 80%; left: 25%; width: 20em"><span class="ctlcmd"> <span><kbd class="key">⌃ Ctrl</kbd></span> <span>on a PC</span> <span><kbd class="key">⌘ command</kbd></span> <span>on a Mac</span> </span></span></span> + <kbd class="key">L</kbd></td> <td>Go to line number</td> </tr> <tr> <td style="text-align: right"><span class="tooltip" style="padding-bottom: 4px"><kbd class="key">⌃ Ctrl / ⌘</kbd><span class="tooltiptext" style="top: 80%; left: 25%; width: 20em"><span class="ctlcmd"> <span><kbd class="key">⌃ Ctrl</kbd></span> <span>on a PC</span> <span><kbd class="key">⌘ command</kbd></span> <span>on a Mac</span> </span></span></span> + <kbd class="key">Q</kbd></td> <td>Go to last edit location</td> </tr> <tr> <td style="text-align: right"><span class="tooltip" style="padding-bottom: 4px"><kbd class="key">⌃ Ctrl / ⌘</kbd><span class="tooltiptext" style="top: 80%; left: 25%; width: 20em"><span class="ctlcmd"> <span><kbd class="key">⌃ Ctrl</kbd></span> <span>on a PC</span> <span><kbd class="key">⌘ command</kbd></span> <span>on a Mac</span> </span></span></span> + <kbd class="key">E</kbd></td> <td>Go to next file in editor</td> </tr> <tr><td colspan="2" style="text-align: center"><strong>Editing</strong></td></tr> <tr> <td style="text-align: right"><kbd class="key">⌥ Alt</kbd> + <kbd class="key">↑ Up</kbd>, <kbd class="key">⌥ Alt</kbd> + <kbd class="key">↓ Down</kbd></td> <td>Move current line up or down</td> </tr> <tr> <td style="text-align: right"><span class="tooltip" style="padding-bottom: 4px"><kbd class="key">⌃ Ctrl / ⌘</kbd><span class="tooltiptext" style="top: 80%; left: 25%; width: 20em"><span class="ctlcmd"> <span><kbd class="key">⌃ Ctrl</kbd></span> <span>on a PC</span> <span><kbd class="key">⌘ command</kbd></span> <span>on a Mac</span> </span></span></span> + <kbd class="key">D</kbd></td> <td>Delete the current line</td> </tr> <tr> <td style="text-align: right"><span class="tooltip" style="padding-bottom: 4px"><kbd class="key">⌃ Ctrl / ⌘</kbd><span class="tooltiptext" style="top: 80%; left: 25%; width: 20em"><span class="ctlcmd"> <span><kbd class="key">⌃ Ctrl</kbd></span> <span>on a PC</span> <span><kbd class="key">⌘ command</kbd></span> <span>on a Mac</span> </span></span></span> + <kbd class="key">/</kbd></td> <td>Comment/uncomment the selected line(s)</td> </tr> <tr> <td style="text-align: right"><span class="tooltip" style="padding-bottom: 4px"><kbd class="key">⌃ Ctrl / ⌘</kbd><span class="tooltiptext" style="top: 80%; left: 25%; width: 20em"><span class="ctlcmd"> <span><kbd class="key">⌃ Ctrl</kbd></span> <span>on a PC</span> <span><kbd class="key">⌘ command</kbd></span> <span>on a Mac</span> </span></span></span> + <kbd class="key">1</kbd></td> <td>Quick fix selected error</td> </tr> <tr> <td style="text-align: right"><span class="tooltip" style="padding-bottom: 4px"><kbd class="key">⌃ Ctrl / ⌘</kbd><span class="tooltiptext" style="top: 80%; left: 25%; width: 20em"><span class="ctlcmd"> <span><kbd class="key">⌃ Ctrl</kbd></span> <span>on a PC</span> <span><kbd class="key">⌘ command</kbd></span> <span>on a Mac</span> </span></span></span> + <kbd class="key">␣ Space</kbd></td> <td>Auto-complete current selection</td> </tr> <tr><td colspan="2" style="text-align: center"><strong>Code cleanup</strong></td></tr> <tr> <td style="text-align: right"><span class="tooltip" style="padding-bottom: 4px"><kbd class="key">⌃ Ctrl / ⌘</kbd><span class="tooltiptext" style="top: 80%; left: 25%; width: 20em"><span class="ctlcmd"> <span><kbd class="key">⌃ Ctrl</kbd></span> <span>on a PC</span> <span><kbd class="key">⌘ command</kbd></span> <span>on a Mac</span> </span></span></span> + <kbd class="key">⇧ Shift</kbd> + <kbd class="key">O</kbd></td> <td>Organize imports</td> </tr> <tr> <td style="text-align: right"><span class="tooltip" style="padding-bottom: 4px"><kbd class="key">⌃ Ctrl / ⌘</kbd><span class="tooltiptext" style="top: 80%; left: 25%; width: 20em"><span class="ctlcmd"> <span><kbd class="key">⌃ Ctrl</kbd></span> <span>on a PC</span> <span><kbd class="key">⌘ command</kbd></span> <span>on a Mac</span> </span></span></span> + <kbd class="key">⇧ Shift</kbd> + <kbd class="key">F</kbd></td> <td> Format code<br /> (BUT make sure you set the <a href="/develop/coding-style#eclipse-code-style-profiles">coding style</a>) </td> </tr> <tr> <td style="text-align: right; "><kbd class="key">⌥ Alt</kbd> + <kbd class="key">⇧ Shift</kbd> + <kbd class="key">S</kbd>, <kbd class="key">U</kbd></td> <td>Clean up (does format and much more)</td> </tr> <tr> <td style="text-align: right"><kbd class="key">⌥ Alt</kbd> + <kbd class="key">⇧ Shift</kbd> + <kbd class="key">R</kbd></td> <td>Refactor/rename selected class/variable</td> </tr> <tr><td colspan="2" style="text-align: center"><strong>Debugging</strong></td></tr> <tr> <td style="text-align: right"><span class="tooltip" style="padding-bottom: 4px"><kbd class="key">⌃ Ctrl / ⌘</kbd><span class="tooltiptext" style="top: 80%; left: 25%; width: 20em"><span class="ctlcmd"> <span><kbd class="key">⌃ Ctrl</kbd></span> <span>on a PC</span> <span><kbd class="key">⌘ command</kbd></span> <span>on a Mac</span> </span></span></span> + <kbd class="key">⇧ Shift</kbd> + <kbd class="key">B</kbd></td> <td>Set/Remove breakpoint</td> </tr> <tr> <td style="text-align: right"><kbd class="key">F5</kbd></td> <td>Step into</td> </tr> <tr> <td style="text-align: right"><kbd class="key">F6</kbd></td> <td>Step over</td> </tr> <tr> <td style="text-align: right"><kbd class="key">F7</kbd></td> <td>Step out</td> </tr> </tbody> </table> <h1 id="the-run-debug-cycle">The Run-Debug cycle</h1> <p>Now that you have the project successfully nestled within Eclipse, you can run it, change the code, and run it again, iterating as needed to develop features and fix bugs. This process is known as the <em>run-debug cycle</em>—although some people call it <em>compile-debug</em> or <em>edit-compile-debug</em> or <em>edit-compile-run</em> or <em>debug-edit-compile</em> or <em>edit-build-test-debug</em> or <em>edit-compile-link-debug</em> or…</p> <h2 id="launch-imagej2">Launch ImageJ2</h2> <p>If you cloned the <a href="https://github.com/imagej/imagej2">imagej2 project</a>, you can launch the program as follows:</p> <ol> <li>In the Package Explorer, expand the <code class="language-plaintext highlighter-rouge">imagej2</code> project</li> <li>Navigate into <code class="language-plaintext highlighter-rouge">src/main/java</code></li> <li>Navigate into <code class="language-plaintext highlighter-rouge">net.imagej</code></li> <li>Right-click on <code class="language-plaintext highlighter-rouge">Main.java</code></li> <li>Choose “Run As” and then “Java Application”</li> </ol> <p>Other projects will have different main classes, but the general procedure is the same.</p> <h2 id="testing-your-plugin-in-an-existing-installation">Testing your plugin in an existing installation</h2> <p>When you run your plugin from Eclipse, you’re only testing with the classpath <em>of this project</em>—which may or may not reflect the environment of an actual user’s installation. To test your plugin in an existing installation you can either simply copy the jar, or use Maven to install your plugin and its dependencies.</p> <div class="thumbnail"> <a href="/media/develop/mavenrunconfig.png" data-lightbox="image-mavenrunconfig-png"> <span class="thumbnail-group"><img src="/media/develop/mavenrunconfig.png" width="380" /></span> </a> <span>Setting up a new Maven Build configuration</span> </div> <h3 id="option-1-copying-the-jar">Option 1: Copying the jar</h3> <p>All modern Eclipse installations have the m2e plugin, so you can simply tell Maven to <a href="http://www.vogella.com/tutorials/EclipseMaven/article.html#example_eclipsemavenproject_runningthebuild">build the project</a>. This creates a <code class="language-plaintext highlighter-rouge">.jar</code> in the <code class="language-plaintext highlighter-rouge">/target</code> subdirectory, which you can then copy to an <code class="language-plaintext highlighter-rouge">ImageJ2.app/jars/</code> directory.</p> <p>This is a simple option that makes minimal changes to the existing installation.</p> <h3 id="option-2-install-dependencies">Option 2: Install dependencies</h3> <p>All mavenized ImageJ projects have built-in support for installing directly into an existing installation, overwriting previous versions of any components, and pulling in up-to-date versions of any dependencies. This is the most robust way to test your plugin, but note that it may make additional changes to your existing ImageJ installation.</p> <p>Steps are as follows:</p> <ol> <li> <p>Right-click your project in Eclipse and select <span class="bc"><span>Run As</span> › <span>Run Configurations…</span></span></p> </li> <li> <p>Scroll down to Maven Build. If you’ve built this project with Maven via Eclipse before there will already be a configuration for it. Otherwise you can double-click “Maven Build” to create a new run configuration.</p> </li> <li> <p>Add a parameter: <code class="language-plaintext highlighter-rouge">scijava.app.directory</code> with value: <code class="language-plaintext highlighter-rouge"><path/to/ImageJ2.app></code> (e.g. <code class="language-plaintext highlighter-rouge">/home/hinerm/Fiji.app</code>)</p> </li> <li> <p>Add a parameter: <code class="language-plaintext highlighter-rouge">scijava.deleteOtherVersions</code> with value: <code class="language-plaintext highlighter-rouge">always</code></p> </li> <li> <p>Click <code class="language-plaintext highlighter-rouge">Apply</code></p> </li> </ol> <p>You can now run the project from this dialog. You only need to perform this configuration once though—future uses of the <a href="http://www.vogella.com/tutorials/EclipseMaven/article.html#example_eclipsemavenproject_runningthebuild">Maven Build</a> option will automatically copy your plugin and its dependencies to the specified ImageJ app.</p> <h2 id="adding-new-plugins">Adding new plugins</h2> <p>The easiest method is to start with a <a href="https://github.com/imagej/example-legacy-plugin">minimal project</a>, renamed to the desired name of your plugin. By convention, the project directory should match the base name of the <code class="language-plaintext highlighter-rouge">.jar</code> file to be generated.</p> <p>The format of such a <code class="language-plaintext highlighter-rouge">pom.xml</code> is described briefly on the <a href="/develop/maven">Maven</a> page.</p> <p>Most importantly, you will need to adjust the <code class="language-plaintext highlighter-rouge">artifactId</code> and the <code class="language-plaintext highlighter-rouge">dependencies</code> section. Should you require a dependency that is not used in Fiji yet, you might want to search for the appropriate <code class="language-plaintext highlighter-rouge">groupId</code> and <code class="language-plaintext highlighter-rouge">version</code> in the <a href="/develop/project-management#maven">SciJava Maven repository</a>.</p> <p>Next, you will put your Java sources into <code class="language-plaintext highlighter-rouge">src/main/java/</code> and adjust <code class="language-plaintext highlighter-rouge">src/main/resources/plugins.config</code>.</p> <p>After that, ask Eclipse to import it: <span class="bc"><span>File</span> › <span>Import</span> › <span>Maven</span> › <span>Import Existing Maven Project</span></span>.</p> <h2 id="viewing-dependency-source">Viewing Dependency Source</h2> <p>When jumping into a dependency class in Eclipse (using <kbd class="key">F3</kbd>), you may see a message stating “Source not found”.</p> <p>For Maven dependencies there must be a <code class="language-plaintext highlighter-rouge">-sources</code> classifier JAR in the repository along side the main JAR. For example, <code class="language-plaintext highlighter-rouge">imagej-common</code> has an <code class="language-plaintext highlighter-rouge">imagej-common-0.24.4.jar</code> and an <code class="language-plaintext highlighter-rouge">imagej-common-0.24.4-sources.jar</code>. In theory, the Eclipse M2E plugin should download this <code class="language-plaintext highlighter-rouge">-sources</code> JAR and automatically display it to you when you jump to the class.</p> <p>However, if for some reason this doesn’t happen you can try the following steps.</p> <ol> <li> <p>Try right-clicking the JAR in the Maven dependencies in Eclipse, and selecting “Download Sources”. This should force Eclipse to download the <code class="language-plaintext highlighter-rouge">-sources</code> JAR.</p> </li> <li>Check that the <code class="language-plaintext highlighter-rouge">-sources</code> JAR has been downloaded locally. <ul> <li>Navigate to <code class="language-plaintext highlighter-rouge"><path-to-.m2-repo>/repository/<groupId>/<artifactId>/<version></code> and see if there is a <code class="language-plaintext highlighter-rouge">-sources</code> JAR there.</li> <li>If it is not, then in a terminal navigate to the folder containing your project’s pom.xml file. And then from the command line run: <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>mvn dependency:get -Dartifact=groupId:artifactId:version:packaging:classifier </code></pre></div> </div> <ul> <li>For example if a project depended on imagej-common and you needed to retrieve the <code class="language-plaintext highlighter-rouge">-sources</code> JAR, the command you’d type would be: <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>mvn dependency:get -Dartifact=net.imagej:imagej-common:0.24.4:jar:sources </code></pre></div> </div> </li> </ul> </li> </ul> </li> <li>If the <code class="language-plaintext highlighter-rouge">-sources</code> JAR was there, you could check its contents by running the following command from the terminal: <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>jar tr <path-to-.m2-repo>/repository/<groupId>/<artifactId>/<version>/<jar-name>-sources.jar </code></pre></div> </div> <ul> <li>If the file in question isn’t there, then unfortunately this project doesn’t have source for that class.</li> </ul> </li> </ol> <p>If the class you’re trying to view is a part of the JRE and you’re on Linux, you may need to run <code class="language-plaintext highlighter-rouge">sudo apt install openjdk-<java-version-number>-sources</code> to retrieve the sources.</p> <p>Note that doing this only allows you to view the source code, it does <strong>not</strong> allow you to edit it. If you need to edit these files, see the <a href="/develop/architecture#using-snapshot-couplings-during-development">snapshot coupling</a> section for more information.</p> <h2 id="see-also">See also</h2> <ul> <li><a href="/develop/plugins">Developing plugins for ImageJ2</a></li> <li><a href="/develop/ij1-plugins">Developing plugins for ImageJ 1.x</a></li> <li><a href="/develop/improving-the-code">Contributing to a plugin</a></li> <li><a href="https://github.com/imagej/example-imagej-command/">example-imagej-command</a> (<a href="/software/imagej2">ImageJ2</a>-style command)</li> <li><a href="https://github.com/imagej/example-legacy-plugin/">example-legacy-plugin</a> (<a href="/software/imagej">ImageJ 1.x</a>-style command)</li> </ul> </div> </div> </section> <!-- Footer --> <section id="footer"> <ul class="icons"> <li><a href="https://forum.image.sc/tag/imagej" class="icon alt"><img src="/media/icons/image-sc.png" width="24" style="vertical-align: middle; margin-top: -10px"><span class="label">Forum</span></a></li> <li><a href="https://twitter.com/hashtag/ImageJ" class="icon brands alt fa-twitter"><span class="label">Twitter</span></a></li> <li><a href="https://github.com/imagej" class="icon brands alt fa-github"><span class="label">GitHub</span></a></li> </ul> <ul class="copyright"> <li>Design: <a href="http://html5up.net">HTML5 UP</a></li> </ul> </section> <!-- Hamburger menu --> <nav role="navigation"> <div id="ham-toggle"> <input type="checkbox" /> <span></span> <!-- top bun --> <span></span> <!-- hamburger --> <span></span> <!-- bottom bun --> <ul id="ham-menu"> <div class="menu"><h3>ImageJ Docs</h3> <ul> <li><a href="/downloads">Download</a></li> <li><details><summary>Learn</summary><ul> <li><details><summary><a href="/learn">ImageJ Basics</a></summary><ul> <li><a href="/tutorials">Tutorials</a></li> <li><a href="/learn/user-guides">User Guides</a></li> <li><a href="/learn/keyboard-shortcuts">Keyboard Shortcuts</a></li> <li><a href="/learn/tips-and-tricks">Tips and Tricks</a></li> <li><a href="/learn/troubleshooting">Troubleshooting</a></li> <li><a href="/learn/faq">Frequently Asked Questions</a></li> <li><details><summary><a href="/platforms">Supported Platforms</a></summary><ul> <li><a href="/platforms/windows">Windows</a></li> <li><a href="/platforms/macos">MacOS</a></li> <li><a href="/platforms/linux">Linux</a></li> <li><a href="/platforms/pi">Raspberry Pi</a></li> <li><a href="/platforms/android">Android</a></li> </ul></details></li> <!-- Learn/ImageJ Basics/Supported Platforms --> <li><details><summary><a href="/formats">File Formats</a></summary><ul> <li><a href="/formats/bio-formats">Bio-Formats</a></li> <li><a href="/formats/video">Video formats</a></li> <li><a href="/formats/quicktime">QuickTime</a></li> <li><a href="/formats/tiff">TIFF</a></li> <li><a href="/formats/pdf">PDF</a></li> <li><a href="/formats/dicom">DICOM</a></li> <li><a href="/formats/lsm">Zeiss LSM</a></li> <li><a href="/formats/olympus">Olympus VSI</a></li> <li><a href="/formats/lurawave">Opera Flex</a></li> <li><a href="/formats/fib-sem">FIB-SEM</a></li> </ul></details></li> <!-- Learn/ImageJ Basics/File Formats --> </ul></details></li> <!-- Learn/ImageJ --> <li><details><summary><a href="/imaging">Scientific Imaging</a></summary><ul> <li><a href="/imaging/principles">Principles of Scientific Imaging</a></li> <li><a href="/imaging/annotating-images">Annotating Images</a></li> <li><a href="/imaging/colocalization-analysis">Colocalization</a></li> <li><a href="/imaging/color-image-processing">Color Image Processing</a></li> <li><a href="/imaging/deconvolution">Deconvolution</a></li> <li><a href="/imaging/image-intensity-processing">Image Intensity Processing</a></li> <li><a href="/imaging/particle-analysis">Particle Analysis</a></li> <li><a href="/imaging/registration">Registration</a></li> <li><a href="/imaging/segmentation">Segmentation</a></li> <li><a href="/imaging/stack-slice-manipulations">Stack-slice Manipulations</a></li> <li><a href="/imaging/t-functions">T-functions</a></li> <li><a href="/imaging/tracking">Tracking</a></li> <li><a href="/imaging/visualization">Visualization</a></li> <li><a href="/imaging/z-functions">Z-functions</a></li> </ul></details></li> <!-- Learn/Scientific Imaging --> </ul></details></li> <!-- Learn --> <li><details open><summary><a href="/plugins">Extend</a></summary><ul> <li><a href="/list-of-extensions">List of Extensions</a></li> <li><details><summary><a href="/update-sites">Update Sites</a></summary><ul> <li><a href="/list-of-update-sites">List of Update Sites</a></li> <li><a href="/update-sites/following">Following an Update Site</a></li> <li><a href="/update-sites/setup">Creating an Update Site</a></li> <li><a href="/update-sites/tos">Terms of Service</a></li> <li><a href="/update-sites/automatic-uploads">Automatic Upload</a></li> <li><a href="/update-sites/core-uploads">Uploading to Core Sites</a></li> <li><a href="/update-sites/faq">Update Sites FAQ</a></li> <li><a href="/update-sites/stats">Statistics</a></li> </ul></details></li> <!-- Extend/Update Sites --> <li><details><summary><a href="/scripting">Scripting</a></summary><ul> <li><a href="/scripting/basics">Scripting Basics</a></li> <li><a href="/scripting/script-editor">Script Editor</a></li> <li><a href="/scripting/parameters">Parameters</a></li> <li><a href="/scripting/user-input">User Input</a></li> <li><a href="/scripting/auto-imports">Auto Import</a></li> <li><a href="/scripting/templates">Templates</a></li> <li><a href="/scripting/batch">Batch Processing</a></li> <li><a href="/scripting/headless">Running Headlessly</a></li> <li><a href="/scripting/comparisons">Scripting Comparisons</a></li> <li><a href="/scripting/toolbox">Toolbox</a></li> <li><details><summary>Languages</summary><ul> <li><a href="/scripting/beanshell">BeanShell Scripting</a></li> <li><a href="/scripting/groovy">Groovy Scripting</a></li> <li><a href="/scripting/macro">ImageJ Macro</a></li> <li><a href="/scripting/javascript">JavaScript</a></li> <li><a href="/scripting/clojure">Lisp (Clojure)</a></li> <li><a href="/scripting/matlab">MATLAB</a></li> <li><a href="/scripting/jython">Python (Jython)</a></li> <li><a href="/scripting/python">Python (native)</a></li> <li><a href="/scripting/renjin">R (Renjin)</a></li> <li><a href="/scripting/jruby">Ruby (JRuby)</a></li> <li><a href="/scripting/scala">Scala Scripting</a></li> </ul></details></li> <!-- Extend/Scripting/Languages --> </ul></details></li> <!-- Extend/Scripting --> <li><details open><summary><a href="/develop">Development</a></summary><ul> <li><a href="/develop/philosophy">Philosophy</a></li> <li><a href="/develop/architecture">Architecture</a></li> <li><a href="/develop/source">Source code</a></li> <li><a href="/develop/project-management">Project management</a></li> <li><a href="/develop/coding-style">Coding style</a></li> <li><a href="/develop/javadoc">Using Javadoc</a></li> <li><a href="/develop/debugging">Debugging</a></li> <li><a href="/develop/wish-list">Wish list</a></li> <li><details open><summary>Tools</summary><ul> <li><a href="/develop/github">GitHub</a></li> <li><a href="/develop/maven">Maven</a></li> <li><a href="/develop/ci">CI/CD</a></li> <li><a href="/develop/dotfiles">Dotfiles</a></li> <li><details open><summary><a href="/develop/ides">IDEs</a></summary><ul> <li><a class="current-page">Eclipse</a></li> <li><a href="/develop/netbeans">NetBeans</a></li> <li><a href="/develop/intellij">IntelliJ IDEA</a></li> <li><a href="/develop/command-line">Command Line</a></li> </ul></details></li> </ul></details></li> <!-- Extend/Development/Tools --> <li><details><summary>Guides</summary><ul> <li><a href="/develop/plugins">Writing plugins</a></li> <li><a href="/develop/improving-the-code">Contributing to a plugin</a></li> <li><a href="/develop/releasing">Development lifecycle</a></li> <li><a href="/develop/building-a-pom">Building a POM</a></li> <li><a href="/develop/debugging-exercises">Hands-on debugging</a></li> <li><a href="/develop/writing-ops">Adding new ops</a></li> <li><a href="/develop/formats">Adding new formats</a></li> <li><a href="/develop/native-libraries">Using native libraries</a></li> <li><a href="/develop/tips">Tips for developers</a></li> <li><a href="/develop/cpp-tips">Tips for C++ developers</a></li> <li><a href="/develop/ij1-plugins">ImageJ 1.x plugins</a></li> <li><a href="/develop/versioning">Versioning</a></li> <li><a href="/develop/logging">Logging</a></li> <li><a href="/develop/uber-jars">Uber-JARs</a></li> </ul></details></li> <!-- Extend/Development/Guides --> <li><details><summary><a href="/develop/git">Git</a></summary><ul> <li><a href="/develop/git/eclipse">Git in Eclipse (EGit)</a></li> <li><a href="/develop/git/mini-howto">Git mini howto</a></li> <li><a href="/develop/git/workshop">Git workshop</a></li> <li><a href="/develop/git/conflicts">Git conflicts</a></li> <li><a href="/develop/git/topic-branches">Git topic branches</a></li> <li><a href="/develop/git/notes">Git notes</a></li> <li><a href="/develop/git/reflogs">Git reflogs</a></li> <li><a href="/develop/git/submodules">Git submodules</a></li> <li><a href="/develop/git/pinpoint-regressions">How to pinpoint regressions</a></li> <li><a href="/develop/git/publish-a-repository">How to publish a git repository</a></li> <li><a href="/develop/git/extract-a-subproject">How to extract a subproject</a></li> </ul></details></li> <!-- Extend/Development/Git --> </ul></details></li> <!-- Extend/Development --> </ul></details></li> <!-- Extend --> <li><details><summary><a href="/contribute">Contribute</a></summary><ul> <li><a href="/contribute/citing">Citing</a></li> <li><a href="/people">Contributors</a></li> <li><a href="/orgs">Organizations</a></li> <li><a href="/contribute/governance">Governance</a></li> <li><a href="/contribute/funding">Funding</a></li> <li><a href="/contribute/fiji">Contributing to Fiji</a></li> <li><details><summary><a href="/licensing">Licensing</a></summary><ul> <li><details><summary><a href="/licensing/open-source">Open Source</a></summary><ul> <li><a href="/licensing/apache">Apache</a></li> <li><a href="/licensing/bsd">BSD</a></li> <li><a href="/licensing/epl">EPL</a></li> <li><a href="/licensing/gpl">GPL</a></li> <li><a href="/licensing/lgpl">LGPL</a></li> <li><a href="/licensing/mit">MIT</a></li> <li><a href="/licensing/public-domain">Public domain</a></li> <li><a href="/licensing/big">BIG</a></li> </ul></details></li> <!-- Contribute/Licensing/Open Source --> <li><a href="/licensing/closed-source">Proprietary</a></li> </ul></details></li> <!-- Contribute/Licensing --> <li><details><summary><a href="/editing">Editing the Wiki</a></summary><ul> <li><a href="/editing/advanced">Advanced Editing</a></li> <li><a href="/editing/buttons">Buttons</a></li> <li><a href="/editing/citations">Citations</a></li> <li><a href="/editing/code">Source Code</a></li> <li><a href="/editing/debugging">Debugging</a></li> <li><a href="/editing/headers">Headers</a></li> <li><a href="/editing/icons">Icons</a></li> <li><a href="/editing/images">Images</a></li> <li><a href="/editing/keys">Keyboard Shortcuts</a></li> <li><a href="/editing/linking">Linking</a></li> <li><a href="/editing/math">Math Expressions</a></li> <li><a href="/editing/menu-paths">Menu Paths</a></li> <li><a href="/editing/navigation">Navigation</a></li> <li><a href="/editing/notices">Notices</a></li> <li><a href="/editing/people">People</a></li> <li><a href="/editing/pitfalls">Pitfalls</a></li> <li><a href="/editing/quizzes">Quizzes</a></li> <li><a href="/editing/statbox">Statbox</a></li> <li><a href="/editing/symbols">Symbols</a></li> <li><a href="/editing/tables">Tables</a></li> <li><a href="/editing/timelines">Timelines</a></li> <li><a href="/editing/tooltips">Tooltips</a></li> <li><a href="/editing/videos">Videos</a></li> <li><a href="/editing/whitespace">Whitespace</a></li> </ul></details></li> <!-- Contribute/Editing the Wiki --> </ul></details></li> <!-- Contribute --> <li><details><summary><a href="/discuss">Discuss</a></summary><ul> <li><a href="/discuss/bugs">Reporting Issues</a></li> <li><a href="/discuss/mailing-lists">Mailing Lists</a></li> <li><a href="/discuss/chat">Chat</a></li> </ul></details></li> <!-- Discuss --> <li><details><summary>Explore</summary><ul> <li><a href="/news">News</a></li> <li><details><summary><a href="/events">Events</a></summary><ul> <li><a href="/events/presentations">Presentations</a></li> <li><a href="/events/conferences">Conferences</a></li> <li><a href="/events/hackathons">Hackathons</a></li> <li><a href="/events">More...</a></li> </ul></details></li> <!-- Discuss/Events --> <li><details><summary><a href="/libs">Libraries</a></summary><ul> <li><a href="/libs/imagej-ops">ImageJ Ops</a></li> <li><a href="/libs/imagej-common">ImageJ Common</a></li> <li><a href="/libs/imagej-legacy">ImageJ Legacy</a></li> <li><a href="/libs/scijava">SciJava</a></li> <li><a href="/libs/scifio">SCIFIO</a></li> <li><details><summary><a href="/libs/imglib2">ImgLib2</a></summary><ul> <li><a href="/libs/imglib2/getting-started">Getting Started</a></li> <li><a href="/libs/imglib2/accessors">Accessors</a></li> <li><a href="/libs/imglib2/accessibles">Accessibles</a></li> <li><a href="/libs/imglib2/examples">Examples</a></li> <li><a href="/libs/imglib2/workshop-introductory">Introductory Workshop</a></li> <li><a href="/libs/imglib2/workshop-advanced">Advanced Workshop</a></li> <li><a href="/libs/imglib2/matlab">ImgLib2 images in MATLAB</a></li> <li><a href="/libs/imglib2/benchmarks">Benchmarks</a></li> <li><a href="/libs/imglib2/faq">FAQ</a></li> <li><a href="/libs/imglib2/developing">Developing ImgLib2</a></li> <li><a href="/libs/imglib2/discussion">ImgLib2 Discussion</a></li> </ul></details></li> <!-- Explore/Libraries/ImgLib2 --> <li><a href="/libs">More...</a></li> </ul></details></li> <!-- Explore/Libraries --> <li><details><summary><a href="/software">Software</a></summary><ul> <li><a href="/software/nih-image">NIH Image</a></li> <li><a href="/software/imagej">ImageJ</a></li> <li><a href="/software/imagej2">ImageJ2</a></li> <li><a href="/software/fiji">Fiji</a></li> <li><a href="/software">More...</a></li> </ul></details></li> <!-- Explore/Software --> </ul></details></li> <!-- Explore --> </ul> </div> </ul> </div> </nav> <div id="dock-overlay-left" class="dock-overlay" data-dock-target="left-column"></div> <div id="dock-overlay-right" class="dock-overlay" data-dock-target="right-column"></div> <!-- Search results --> <div id="search-results"> <div id="search-hits"></div> <div id="pagination"></div> </div> <!-- Scripts --> <!-- Libraries --> <script src="/assets/js/jquery.min.js"></script> <script src="/assets/js/jquery.scrolly.min.js"></script> <script src="/assets/js/browser.min.js"></script> <script src="/assets/js/breakpoints.min.js"></script> <script src="/assets/js/util.js"></script> <script src="/assets/js/jquery.toc.js"></script> <script src="/assets/js/lightbox.min.js"></script> <!-- Extensions --> <!-- Site code --> <script src="/assets/js/main.js"></script> <script src="/assets/js/dock.js"></script> <script src="/assets/js/code.js"></script> <!-- Anchors --> <script src="https://cdn.jsdelivr.net/npm/anchor-js/anchor.min.js"></script> <script>anchors.add('#page h1, #page h2, #page h3, #page h4, #page h5, #page h6');</script> <!-- Citations --> <script src="https://cdn.jsdelivr.net/npm/citation-js@0.4.0-9"></script> <script src="/assets/js/cite.js"></script> <!-- Search --> <script src="https://cdn.jsdelivr.net/npm/algoliasearch@4.13.0/dist/algoliasearch-lite.umd.js"></script> <script src="https://cdn.jsdelivr.net/npm/instantsearch.js@4.40.3/dist/instantsearch.production.min.js"></script> <script src="/assets/js/search.js"></script> <script src="/assets/js/search-tweaks.js"></script> </body> </html>