<!DOCTYPE html>
<!--[if IE 8]> <html lang="en" class="ie8"> <![endif]-->  
<!--[if IE 9]> <html lang="en" class="ie9"> <![endif]-->  
<!--[if !IE]><!-->
<html lang="en"> <!--<![endif]-->
  <head>
    <title>M2Eclipse | FAQ</title>
    <!-- Meta -->
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta name="description" content="Takari is focused on continuous delivery for the Maven ecosystem and offers Apache Maven training classes" />
    <meta name="author" content="takari.io" />
    <meta property="twitter:account_id" content="4503599627980362" />  
    
    <!-- CSS Global Compulsory-->
    <link rel="stylesheet" href="/m2e/assets/plugins/bootstrap/css/bootstrap.css" />
    <link rel="stylesheet" href="/m2e/assets/css/style.css" />
    <link rel="stylesheet" href="/m2e/assets/css/m2eclipse.css" />
    <link rel="shortcut icon" href="/m2e/assets/img/favicon.ico" />        
    <!-- CSS Implementing Plugins -->
    <link rel="stylesheet" href="/m2e/assets/plugins/font-awesome/css/font-awesome.css" />
    <link rel="stylesheet" href="/m2e/assets/plugins/flexslider/flexslider.css" />
    <link rel="stylesheet" href="/m2e/assets/plugins/parallax-slider/css/parallax-slider.css" />
    <!-- Syntax Highlighting -->
    <link rel="stylesheet" href="/m2e/assets/css/code/syntax-highlighting.css" />
    
    <!-- GA -->
    <script>
      (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
      (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
      m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
      })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

      ga('create', 'UA-56202333-1', 'takari.io');
      ga('send', 'pageview');

    </script>
  </head>

  <body>
    <div class="wrap">
      
            <div class="header">
        <div class="navbar navbar-default" role="navigation">
          <div class="container">
            <!-- Brand and toggle get grouped for better mobile display -->
            <div class="navbar-header">
              <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-responsive-collapse">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
              </button>
              <a class="navbar-brand" href="/index.html"> 
                <img id="logo-header" src="/assets/img/m2e_logo@2x.svg" alt="M2Eclipse" width="150" height="61" style="margin:20px 0px 10px;"/>
              </a>
            </div>

            <!-- Collect the nav links, forms, and other content for toggling -->
            <div class="collapse navbar-collapse navbar-responsive-collapse">
              <ul class="nav navbar-nav navbar-left">
              
                  
                  
                  <li class="">
                      <a href="/m2e-news.html">News</a>
                  </li>
                
                  
                  
                  <li class="">
                      <a href="/m2e-downloads.html">Download</a>
                  </li>
                
                  
                  
                  <li class="">
                      <a href="/documentation/m2e-documentation.html">Documentation</a>
                  </li>
                
                  
                  
                  <li class="">
                      <a href="/m2e-community.html">Community</a>
                  </li>
                
              </ul>
            </div>
          </div>
        </div>
      </div><!-- END header -->
      
      <div class="container" style="margin-top:20px;">
        <div class="row">
  <div class="col-md-3">
    <div class="margin-bottom-30"></div>
    <h4 class="headline">Users</h2>
    <ul class="unstyled">
      <li><a href="/documentation/m2e-faq.html">FAQ</a></li>
      <li><a href="/documentation/m2e-execution-not-covered.html">Execution Not Covered</a></li>
    </ul>  
    <h4 class="headline">Developers</h2>
    <ul class="unstyled">
      <li><a href="/documentation/m2e-development-environment.html">Developement Environment Setup</a></li>
    </ul>  
    <h4 class="headline">Extension Developers</h2>
    <ul class="unstyled">
      <li><a href="/documentation/m2e-extension-development.html">Getting Started</a></li>
    </ul>      
    <h4 class="headline">Release Notes</h2>
    <ul class="unstyled">
      <li><a href="/documentation/release-notes-15.html">M2Eclipse 1.5</a></li>
    </ul>      
  </div>  
  <div class="col-md-9 docs">
  <h1>FAQ (we know this needs to be updated)</h1><h2>Unable to Locate the Javac Compiler Error</h2><p>Some users reported the following error that happens when importing Maven projects or when invoking "Update Sources" action.</p>
<div class="highlight"><pre><a name="line-%s"></a>6/25/07 1:15:44 PM CDT: ERROR mojo-execute : compiler:compile : Compilation failure
<a name="line-%s"></a>Unable to locate the Javac Compiler in:
<a name="line-%s"></a>C:Program FilesJavaj2re1.4.2_14..libtools.jar
<a name="line-%s"></a>Please ensure you are using JDK 1.4 or above and
<a name="line-%s"></a>not a JRE (the com.sun.tools.javac.Main class is required).
<a name="line-%s"></a>In most cases you can change the location of your Java
<a name="line-%s"></a>installation by setting the JAVA_HOME environment variable.
</pre></div><p>That happens because those actions runs in the same JVM where Eclipse is running. If that JVM comes from JRE that isnât part of JDK, there is no Java compiler (the tools.jar) around. To workaround this you can add <code>-vm</code> argument to Eclipse command line or eclipse.ini. For Eclipse 3.3 it would look something like this:</p>
<div class="highlight"><pre><a name="line-%s"></a>-showsplash
<a name="line-%s"></a>org.eclipse.platform
<a name="line-%s"></a>--launcher.XXMaxPermSize
<a name="line-%s"></a>256m
<a name="line-%s"></a>-vm
<a name="line-%s"></a>C:\jdk1.6.0\bin\javaw.exe
<a name="line-%s"></a>-vmargs
<a name="line-%s"></a>-Xms40m
<a name="line-%s"></a>-Xmx256m
</pre></div><p>Alternatively you could specify compilerId in the pom.xml, so Maven won't be looking for the JDK when compiling Java code:</p>
<div class="highlight"><pre><a name="line-%s"></a>&lt;plugin&gt;
<a name="line-%s"></a>  &lt;artifactid&gt;maven-compiler-plugin&lt;/artifactid&gt;
<a name="line-%s"></a>  &lt;configuration&gt;
<a name="line-%s"></a>    &lt;compilerid&gt;eclipse&lt;/compilerid&gt;
<a name="line-%s"></a>  &lt;/configuration&gt;
<a name="line-%s"></a>  &lt;dependencies&gt;
<a name="line-%s"></a>    &lt;dependency&gt;
<a name="line-%s"></a>      &lt;groupid&gt;org.codehaus.plexus&lt;/groupid&gt;
<a name="line-%s"></a>      &lt;artifactid&gt;plexus-compiler-eclipse&lt;/artifactid&gt;
<a name="line-%s"></a>      &lt;version&gt;xxxx&lt;/version&gt;
<a name="line-%s"></a>    &lt;/dependency&gt;
<a name="line-%s"></a>  &lt;/dependencies&gt;
<a name="line-%s"></a>&lt;/plugin&gt;
</pre></div><p>Also note that to launch Maven from within Eclipse, JRE used for launch also need to come from JDK. By default Eclipse registers JRE it is started in, but this can be configured on "Window / Preferences / Java / Installed JREs" preference page.</p><h2>Compilation errors on restricted classes</h2><p>Projects using classes from <code>rt.jar</code>, such as <code>com.sun.*</code> (and some others) can have compilation errors like: "Access restriction: The type RE is not accessible due to restriction on required library <jrepath>/lib/rt.jar". Such errors indicate use of non-API classes and those access rules are defined by Eclipse JDT.</p><p>You can change compiler settings to not fail on those restrictions in workspace settings in Window / Preferences / Java / Compiler / Errors/Warnings / Deprecated and restricted API / Forbidden reference (access rules) / Warnings; or per-project from Project / Properties / Java Compiler / Errors/Warnings / Deprecated and restricted API / Forbidden reference (access rules) / Warnings</p><h2>How to Configure Proxy and Location of Maven local Repository</h2><p>M2Eclipse is using Maven <code>settings.xml</code> for proxy, local repository location and any other environment-specific configuration. This way we can use same settings between the command line and the IDE.</p><p>Default location of the <code>settings.xml</code> is at <code>~/.m2/settings.xml</code>, but you can also specify location of the global settings, i.e. one in <code>&lt;maven home&gt;/conf/settings.xml</code></p><h2>Why do Resource Folders in Java Project Have <code>excluded=&quot;*&quot;</code></h2><p>Many users are confused that when Java project is configured in Eclipse, resource folders gets <code>excluded=&quot;*&quot;</code>. This is done intentionally, because those resources are processed by the "Maven Builder" registered to the project. This builder provides special resource handling, that includes filtering, as well as execution of other Maven plugins for processing resources. See Maven build lifecycle for more details.</p><p>If you manually remove resource exclusion, JDT will copy resources and overwrite filtered resources generated by Maven plugins.</p><p>Actually project resource folder doesnât really need to be added to the buildpath (Maven Builder is going to work without it), but it been considered convenient and look better in the Package Explorer and other Eclipse views.</p><p>Also note, that classpath used for JUnit and Java Application launch configurations for projects that have Maven support enabled is also calculated in a special way and excluded resources does not affect it either.</p><h2>Why Generated Source Folders are not Added to the Classpath</h2><p>Maven plugins used to generate source code from resources or other sources can register additional source folders to Maven project during the build. Usually such plugins are bound to <code>process-resources</code> (or <code>process-test-resources</code>) build phase (for example jaxb, modello or xdoclet plugins). This means that to get those source folders for generated sources, we have to run corresponding Maven build phase.</p><p>Not all projects using generated sources, so for performance reasons, M2Eclipse does not run any Maven goals by default on project import. This can be changed in the Maven settings in "Window / Preferences / Maven / Goals to run on project import" (e.g. you can specify "process-resources" build phase or specific plugins in that field).</p><p>Alternatively you can run "Maven / Update project configuration" action from the project popup menu, which is configured to run "process-resources" by default and it can be also changed on the same preference page.</p><h2>Why projects are renamed on import</h2><p>When projects are imported directly into Eclipse workspace folder, the project name should match folder name. It is not an issue if you specify an alternative location for those projects.</p><p>Also, by default, Maven project import/checkout is using project name template like [artifactId]. You can specify alternative name template in Advanced section of the project import wizards (e.g. you can use [artifactId]-[version] template). Note that you need to make sure that artifact versions are different between those projects, or else dependency resolver will get really confused.</p><h2>Why does M2Eclipse checkout Maven projects as "maven.NNNNNNNN"?</h2><p>The Maven project checkout is based on generic Maven SCM API (which supports number of SCM providers out of the box) and we don't have any information about Maven projects before the actual checkout (e.g. we don't know if folder or project names are going to be conflicting). There are two scenarios:</p>
<ol>
  <li>the root checked out folder has pom.xml</li>
  <li>the checked out folder has number of projects without pom.xml at the root</li>
</ol><p>The second scenario could happen when there is several projects located at selected SCM URL or when user selected multiple SCM URLs, e.g. using one of the available SCM UI integrations (CVS, Subclipse, etc).</p><p>In the first case the checkout folder will be renamed to match the result Eclipse project name for the Maven pom.xml and in the first case folder stays with "maven.NNNNNNNN" name. It is not clear if it is always possible to move checkout folder around for all SCMs (e.g. because of the SCM metadata).</p><p>Also see <a href="#Why_projects_are_renamed_on_import" title="wikilink">Why projects are renamed on import</a></p><h2>How to Connect to HTTPS Repositories</h2><p>The Maven howto describes how to configure Maven to work with https repositories. To make the same properties work in Eclipse they need to be specified in two additional places:</p>
<ol>
  <li><p>to make in-process Maven use them (e.g. on project import or "Maven / Update project configuration" actions) add them to -vmargs section in eclipse.ini or to Eclipse command line</p></li>
  <li><p>to make Maven launch configuration use them use "Window / Preferences / Java / Installed JREs / Edit / Default VM arguments"</p></li>
</ol><p>To make both Maven cli and Eclipse use the preferences they would need to come from the Mavenâs settings.xml, but that would require changes in the Maven itself.</p><h2>Miscellaneous</h2><h2>How Search Works</h2><p>Dependency search is using local index for Maven repositories:</p>
<ul>
  <li>indexes for remote Maven repositories, such as Central repository, can be downloaded from remote repositories if they publish index created using Nexus Indexer tool or if repository is managed by Nexus repository manager</li>
  <li>indexes for remote Maven repositories can be also packaged as Eclipse plugin and installed using Eclipse Update manager.</li>
  <li>index for a Local Maven repository is updated incrementally when plugin downloads jars from any remote repositories. Local repository can be also reindexed from Window / Preferencesâ¦ / Maven preferences page.</li>
  <li>index for an Eclipse workspace is updated when projects are added, removed or changed in Eclipse workspace.</li>
</ul><h2>M2Eclipse vs. maven-eclipse-plugin</h2><p>M2Eclipse is an Eclipse plugin that allows execution of Maven goals and manages Maven dependencies. It is a different beast to the maven-eclipse-plugin which is a Maven plugin that attempts to manage/modify Eclipse project files to account for Maven dependencies. Generally, if you are using m2eclipse you don't really need maven-eclipse-plugin. The former is providing advanced project import and configuration features and provides integration with other Eclipse tools.</p><h2>What Version of Maven is used by M2Eclipse?</h2><p>Plugin is not actually using Maven itself. It is using component that is part of Maven called Maven Embedder. This component is not available for Maven 2.0.x. The Embedder is used by the Maven command line interface (CLI) starting from version 2.1 that includes number of improvements to allow it to actually embed Maven.</p><p>The m2eclipse is currently using the Embedder component from Maven 3.0. If you want to execute particular version of Maven installed elsewhere, you can do so from the Maven launch configuration or select it as default in Maven / Installations preference page.</p><h2>Why does my Maven build work on the CLI but not in M2Eclipse?</h2><p>Because M2Eclipse is using the embedded Maven runtime in Maven 3.0, you can see differences in the execution between m2eclipse and command line when Maven 2.1.x is used. We hope that such regressions and incompatibilities will be fixed in the future releases of Maven 3.0. Note that m2eclipse is always using embedded Maven runtime when running Maven builder, importing projects and updating project configuration, however you can configure m2eclipse to use external Maven installation when launching Maven using "Run as¦ / Maven XXX" actions.</p><h2>How to generate a thread dump</h2>
<ul>
  <li>On Windows press Ctrl-Break in the Java console started with Eclipse IDE. To start Eclipse with Java console use java.exe instead of javaw.exe in eclipse.ini.</li>
</ul>
<!-- -->
<div class="highlight"><pre><a name="line-%s"></a>-vm
<a name="line-%s"></a>C:\jdk1.6.0_03\bin\java.exe
</pre></div>
<ul>
  <li>On Unix, Linux, Mac OS X press <code>Ctrl-\</code> in the terminal console used to start Eclipse IDE</li>
  <li>Alternatively on Unix, Linux, Mac OS X send the QUIT signal to the Java VM running Eclipse: kill -QUIT processid, where processid is the process number of the respective java process</li>
  <li>All OS: use jps and jstack tool from JDK 1.5 or JDK 6.0 installation (run jps to get the process id, jstack <pid> to print thread dump).</li>
  <li>All OS: use StackTrace tool
  <ul>
    <li>launch from <a href="http://www.adaptj.com/root/webstart/stacktrace/app/launch.jnlp">http://www.adaptj.com/root/webstart/stacktrace/app/launch.jnlp</a></li>
    <li>details <a href="http://www.adaptj.com/root/main/stacktrace">http://www.adaptj.com/root/main/stacktrace</a></li>
    <li>to generate thread dump invoke "Process / Selectâ¦" from the main main menu and select Java process from the drop down list, then invoke "Process / Thread Dump"</li>
  </ul></li>
  <li>Other tools listed on Javapedia ThreadDump page</li>
</ul><h2>How to retrieve an actual command line used to start JVM and Maven</h2><p>An actual command line used to start JVM processes in Eclipse, including Maven builds, can be retrieved from the Debug view (e.g. from the Debug perspective):</p><p>debugview.png</p><p>There you can select corresponding Java process and open its properties (from the popup menu or using Alt-Enter shortcut):</p><p>processproperties.png</p>
  </div>
</div>
      </div><!-- END container -->
    </div><!-- END wrap -->
    
        <div class="stickyFooter">
      <div class="footer">
        <div class="container">
          <div class="row">
            <div class="col-md-4 md-margin-bottom-40"></div><!--/col-md-4-->
            <div class="col-md-4 md-margin-bottom-40">            </div>
            <div class="col-md-4">              
            </div>
          </div>
        </div>
      </div>
      <div class="copyright">
        <div class="container">
          <div class="row">
            <div class="col-md-6">
              <p class="copyright-space">
                <a href="https://www.eclipse.org/">Home</a> | <a href="https://www.eclipse.org/legal/privacy.php">Privacy Policy</a> | <a href="https://www.eclipse.org/legal/termsofuse.php">Terms of Use</a> | <a href="https://www.eclipse.org/legal/copyright.php">Copyright Agent</a> | <a href="https://www.eclipse.org/legal/">Legal</a> | <a href="https://www.eclipse.org/org/foundation/contact.php">Contact Us</a>
              </p>
            </div>
            <div class="col-md-6" align="right">
              <p class="copyright-space">
                Copyright &copy;
                2014 The Eclipse Foundation. All Rights Reserved.
              </p>
            </div>
          </div>
        </div>
      </div>
    </div>



    <!-- JS Global Compulsory -->
    <script type="text/javascript" src="/m2e/assets/plugins/jquery-1.10.2.min.js"></script>
    <script type="text/javascript" src="/m2e/assets/plugins/jquery-migrate-1.2.1.min.js"></script>
    <script type="text/javascript" src="/m2e/assets/plugins/bootstrap/js/bootstrap.min.js"></script>
    <script type="text/javascript" src="/m2e/assets/plugins/hover-dropdown.min.js"></script>
    <script type="text/javascript" src="/m2e/assets/plugins/back-to-top.js"></script>
    <!-- JS Implementing Plugins -->
    <script type="text/javascript" src="/m2e/assets/plugins/flexslider/jquery.flexslider-min.js"></script>
    <script type="text/javascript" src="/m2e/assets/plugins/parallax-slider/js/modernizr.js"></script>
    <script type="text/javascript" src="/m2e/assets/plugins/parallax-slider/js/jquery.cslider.js"></script> 
    <!-- JS Page Level -->
    <script type="text/javascript" src="/m2e/assets/js/app.js"></script>
    <script type="text/javascript" src="/m2e/assets/js/index.js"></script>
    <script type="text/javascript">
      jQuery(document).ready(function() {
      App.init();
      App.initSliders();
      Index.initParallaxSlider();
      });
    </script>
    <!--[if lt IE 9]>
        <script src="/assets/plugins/respond.js"></script>
    <![endif]-->
  </body>
</html>	