460 lines
24 KiB
HTML
460 lines
24 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en">
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||
|
||
|
||
|
||
|
||
<!--<link rel="shortcut icon" href="https://www.openhab.org/favicon.png"></link>-->
|
||
<title>Equinox - openHAB 2 - Empowering the Smart Home</title>
|
||
|
||
<!-- CSS -->
|
||
<link type="text/css" rel="stylesheet" href="/v2.1/css/materialize.css" media="screen,projection" />
|
||
<link type="text/css" rel="stylesheet" href="/v2.1/css/pygments-jekyll-style.css" />
|
||
<link type="text/css" rel="stylesheet" href="/v2.1/css/styles.css" />
|
||
<link type="text/css" rel="stylesheet" href="/v2.1/css/openhab.css" />
|
||
<link type="text/css" rel="stylesheet" href="/v2.1/css/collapsible.css" />
|
||
|
||
<!-- Font -->
|
||
<link type="text/css" rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons" />
|
||
<link type="text/css" rel="stylesheet" href="https://fonts.googleapis.com/css?family=Lato:300,400,700" />
|
||
<link rel="canonical" href="http://docs.openhab.org/developers/prerequisites/equinox.html" />
|
||
<script type="text/javascript">var gaProperty = 'UA-47717934-3';var disableStr = 'ga-disable-' + gaProperty;if (document.cookie.indexOf(disableStr + '=true') > -1) {window[disableStr] = true;}</script>
|
||
<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','https://www.google-analytics.com/analytics.js','ga');
|
||
ga('create', 'UA-47717934-3', 'auto');
|
||
ga('set', 'anonymizeIp', true);
|
||
ga('send', 'pageview');
|
||
</script>
|
||
</head>
|
||
|
||
|
||
<body class="documentation">
|
||
<div id="header" class="navbar-fixed">
|
||
<nav role="navigation">
|
||
<div class="container">
|
||
<div class="nav-wrapper">
|
||
<a href="/v2.1/index.html"><img id="logo" src="/images/logo.png" /></a>
|
||
<a href="#" data-activates="nav-mobile" class="button-collapse"><i class="material-icons">menu</i></a>
|
||
<ul class="right hide-on-med-and-down">
|
||
<li><a href="/tutorials/index.html">Tutorials</a></li>
|
||
<li><a href="/v2.1/introduction.html">User Manual</a></li>
|
||
<li><a href="/developers/index.html">Developer Guide</a></li>
|
||
<li><a target="_blank" href="https://community.openhab.org">Community Forum</a></li>
|
||
<li><a target="_blank" href="https://github.com/openhab">GitHub</a></li>
|
||
<li class="search"><i class="material-icons">search</i></li>
|
||
<li class="search">
|
||
<form method="GET" id="searchform" class="search-form" action="/search">
|
||
<input id="query" name="q" type="text" class="search-form-input" placeholder="search" />
|
||
</form>
|
||
</li>
|
||
</ul>
|
||
<ul id="nav-mobile" class="side-nav">
|
||
<li><a href="/v2.1/index.html">Home</a></li>
|
||
<li><a href="/tutorials/index.html">Tutorials</a></li>
|
||
<li><a href="/v2.1/introduction.html">User Manual</a></li>
|
||
<li><a href="/developers/index.html">Developer Guide</a></li>
|
||
<li><a target="_blank" href="https://community.openhab.org">Community Forum</a></li>
|
||
<li><a target="_blank" href="https://github.com/openhab">GitHub</a></li>
|
||
<li class="search">
|
||
<form method="GET" id="searchformmob" class="search-form" action="/search">
|
||
<input id="querymob" name="q" type="text" class="search-form-input" placeholder="search" />
|
||
</form>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</nav>
|
||
</div>
|
||
|
||
|
||
<section id="documentation" class="text content-wrapper">
|
||
<div class="container">
|
||
<div class="side-nav-wrapper">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<ul class="nav">
|
||
<li><a href="/v2.1/developers">Overview</a></li>
|
||
<li><a href="/v2.1/developers/contributing/contributing">Contributing</a></li>
|
||
<li><a href="/v2.1/developers/prerequisites/osgi.html">Prerequisites</a>
|
||
<ul>
|
||
<li><a href="/v2.1/developers/prerequisites/osgi.html">OSGi</a>
|
||
<ul>
|
||
<li><a href="/v2.1/developers/prerequisites/osgi.html">Overview</a></li>
|
||
<li><a href="/v2.1/developers/prerequisites/osgids.html">Declarative Services</a></li>
|
||
<li><a href="/v2.1/developers/prerequisites/osgitasks.html">Coding tasks</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="/v2.1/developers/prerequisites/tycho.html">Tycho</a></li>
|
||
<li><a href="/v2.1/developers/prerequisites/equinox.html">Equinox</a></li>
|
||
<li><a href="/v2.1/developers/prerequisites/targetplatform.html">Target Platform</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="/v2.1/developers/development/ide.html">Basics</a>
|
||
<ul>
|
||
<li><a href="/v2.1/developers/development/ide.html">IDE Setup</a></li>
|
||
<li><a href="/v2.1/developers/development/guidelines.html">Code Guidelines</a></li>
|
||
<li><a href="/v2.1/developers/development/bindings.html">Developing Bindings</a></li>
|
||
<li><a href="/v2.1/developers/development/logging.html">Logging</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="/v2.1/developers/development/evolution.html">Migration from 1.x</a>
|
||
<ul>
|
||
<li><a href="/v2.1/developers/development/evolution.html">Technical Differences</a></li>
|
||
<li><a href="/v2.1/developers/development/compatibilitylayer.html">Compatibility Layer</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
|
||
</div>
|
||
<div class="content">
|
||
|
||
<h1 id="equinox">Equinox</h1>
|
||
|
||
<h2 class="no_toc" id="table-of-contents">Table of contents</h2>
|
||
|
||
<ul id="markdown-toc">
|
||
<li><a href="#i-introduction" id="markdown-toc-i-introduction">I. Introduction</a></li>
|
||
<li><a href="#ii-start-equinox-runtime-from-eclipse" id="markdown-toc-ii-start-equinox-runtime-from-eclipse">II. Start Equinox Runtime from Eclipse</a></li>
|
||
<li><a href="#iii-run-equinox-standalone" id="markdown-toc-iii-run-equinox-standalone">III. Run Equinox standalone</a></li>
|
||
<li><a href="#iv-commands" id="markdown-toc-iv-commands">IV. Commands</a></li>
|
||
<li><a href="#v-equinox-bundles" id="markdown-toc-v-equinox-bundles">V. Equinox Bundles</a></li>
|
||
<li><a href="#vi-p2" id="markdown-toc-vi-p2">VI. p2</a> <ul>
|
||
<li><a href="#1-core-concepts" id="markdown-toc-1-core-concepts">1. Core Concepts</a></li>
|
||
<li><a href="#2-installable-unit" id="markdown-toc-2-installable-unit">2. Installable Unit</a></li>
|
||
<li><a href="#3-update-sites" id="markdown-toc-3-update-sites">3. Update sites</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="#vii-further-reading" id="markdown-toc-vii-further-reading">VII. Further Reading</a></li>
|
||
</ul>
|
||
|
||
<h2 id="i-introduction">I. Introduction</h2>
|
||
|
||
<p><a href="http://www.eclipse.org/equinox/">Equinox</a> is considered to be a reference implementation of the <a href="https://www.osgi.org/osgi-service-platform-release-4-downloads/">OSGi Core 4.x specification</a> and one of the most widely used. It is an <a href="http://git.eclipse.org/c/equinox/">open source project</a>, part of the <a href="https://eclipse.org/eclipse/">Eclipse project</a>. It provides a set of bundles, that implement various optional OSGi services.</p>
|
||
|
||
<p>The openHAB bundles are deployed on Equinox runtime. Knowledge about how to start the runtime and execute basic commands will help you to speedup the development process. Some of the bundles that you are going to use from Eclipse SmartHome<strong><sup>TM</sup></strong> and openHAB depend on Equinox bundles and this article will list some of the Equinox core bundles and the services that they provide.</p>
|
||
|
||
<h2 id="ii-start-equinox-runtime-from-eclipse">II. Start Equinox Runtime from Eclipse</h2>
|
||
|
||
<p>First make sure that you have installed <a href="../development/ide.html">openHAB Eclipse IDE</a>.</p>
|
||
|
||
<p>Then follow these steps:</p>
|
||
|
||
<ol>
|
||
<li>Start Eclipse and go to “Run” -> “Run Configurations”.</li>
|
||
<li>From the list in the left panel choose “OSGi Framework”. Right click on it and choose “New”.</li>
|
||
<li>After you’ve been created a new configuration, select the bundles that you need from the workspace.</li>
|
||
<li>
|
||
<p>Then make sure that the following bundles from the target platform are selected, otherwise the OSGi console will not be available:</p>
|
||
|
||
<p>org.apache.felix.gogo.runtime
|
||
org.apache.felix.gogo.shell
|
||
org.apache.felix.gogo.command
|
||
org.eclipse.equinox.console</p>
|
||
</li>
|
||
<li>Click on “Add Required Bundles”. Eclipse will resolve all dependencies of the bundles listed above and include new bundles to the configuration.</li>
|
||
<li>Click on “Validate Bundles” and make sure that “No problems were detected” is displayed.</li>
|
||
<li>You can start Equinox with the “Run” button.</li>
|
||
</ol>
|
||
|
||
<p><img src="images/runconfiguration.png" alt="Run Configurations dialog window" /></p>
|
||
|
||
<p>If you use Eclipse for an IDE, this will be the easiest way to run your bundles in an Equinox runtime. If you do not have experience with writing OSGi bundles, go to our <a href="osgitasks.html">coding tasks page</a>.</p>
|
||
|
||
<h2 id="iii-run-equinox-standalone">III. Run Equinox standalone</h2>
|
||
|
||
<p>The <strong>org.eclipse.osgi</strong> bundle is the framework implementation of the Core Framework R4 specification in a standalone package.</p>
|
||
|
||
<p>You can get it from your <a href="../development/ide.html">Eclipse IDE installation for openHAB</a> (If you’re using Windows, it should be located at <code class="highlighter-rouge">C:\Users\your.name\.p2\pool\plugins\org.eclipse.osgi_3.x.x_xxxx.jar</code>).</p>
|
||
|
||
<ol>
|
||
<li>Equinox versions before 3.8.0.M4.</li>
|
||
</ol>
|
||
|
||
<p>In some older version of Equinox, using the following command line:</p>
|
||
|
||
<div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code>java <span class="nt">-jar</span> org.eclipse.osgi_3.x.x_xxxx.jar <span class="nt">-console</span>
|
||
</code></pre></div></div>
|
||
|
||
<p>was enough to run it standalone.</p>
|
||
|
||
<ol>
|
||
<li>Equinox versions after 3.8.0.M4.</li>
|
||
</ol>
|
||
|
||
<p>Starting from Equinox 3.8.0.M4, it has a new console. So the command line above will probably not work. You need some additional bundles in order to run Equinox properly. There are different ways to add those bundles and one of them is given below:</p>
|
||
|
||
<ol>
|
||
<li>
|
||
<p>After you have downloaded and installed Eclipse IDE for openHAB, find your .p2 repository and go to the <code class="highlighter-rouge">plugins</code> folder. (if you’re using Windows, it should be located at <code class="highlighter-rouge">C:\Users\your.name\.p2\pool\plugins</code>).</p>
|
||
</li>
|
||
<li>
|
||
<p>Make sure that there is a <code class="highlighter-rouge">org.eclipse.osgi_3.x.x_xxxx.jar</code> in that folder.</p>
|
||
</li>
|
||
<li>
|
||
<p>Create <code class="highlighter-rouge">configuration</code> folder in the <code class="highlighter-rouge">plugins</code> folder.</p>
|
||
</li>
|
||
<li>
|
||
<p>Inside the <code class="highlighter-rouge">configuration</code> folder create a file <code class="highlighter-rouge">config.ini</code>.</p>
|
||
</li>
|
||
<li>
|
||
<p>Save the following content in the <code class="highlighter-rouge">config.ini</code> file:</p>
|
||
</li>
|
||
</ol>
|
||
|
||
<div class="language-ini highlighter-rouge"><div class="highlight"><pre class="highlight"><code> <span class="py">osgi.bundles</span><span class="p">=</span><span class="se">\ </span>
|
||
<span class="s">org.eclipse.core.runtime,</span><span class="se">\ </span>
|
||
<span class="s">org.eclipse.equinox.common,</span><span class="se">\ </span>
|
||
<span class="s">org.eclipse.core.jobs,</span><span class="se">\ </span>
|
||
<span class="s">org.eclipse.equinox.registry,</span><span class="se">\ </span>
|
||
<span class="s">org.eclipse.equinox.preferences,</span><span class="se">\ </span>
|
||
<span class="s">org.eclipse.core.contenttype,</span><span class="se">\ </span>
|
||
<span class="s">org.eclipse.equinox.app,</span><span class="se">\ </span>
|
||
<span class="s">org.eclipse.equinox.console,</span><span class="se">\ </span>
|
||
<span class="s">org.apache.felix.gogo.runtime,</span><span class="se">\ </span>
|
||
<span class="s">org.apache.felix.gogo.shell,</span><span class="se">\ </span>
|
||
<span class="s">org.apache.felix.gogo.command </span>
|
||
|
||
<span class="py">eclipse.ignoreApp</span><span class="p">=</span><span class="s">true </span>
|
||
<span class="py">eclipse.consoleLog</span><span class="p">=</span><span class="s">true </span>
|
||
</code></pre></div></div>
|
||
|
||
<ol>
|
||
<li>Use the following command line to run Equinox:</li>
|
||
</ol>
|
||
|
||
<div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code>java <span class="nt">-jar</span> org.eclipse.osgi_3.x.x_xxxx.jar <span class="nt">-console</span> <span class="nt">-configuration</span> configuration
|
||
</code></pre></div></div>
|
||
|
||
<h2 id="iv-commands">IV. Commands</h2>
|
||
|
||
<p>Once you have Equinox running, you will see a prompt. Some of the basic
|
||
osgi commands are:</p>
|
||
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th>Command</th>
|
||
<th>Description</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td><em>help</em></td>
|
||
<td>Basic command that will list all available commands</td>
|
||
</tr>
|
||
<tr>
|
||
<td><em>install</em> [bundle URL]</td>
|
||
<td>Installs the bundle from the given URL</td>
|
||
</tr>
|
||
<tr>
|
||
<td><em>start</em> [bundle # or bundle name]</td>
|
||
<td>Starts the bundle with the given numeric or symbolic id</td>
|
||
</tr>
|
||
<tr>
|
||
<td><em>stop</em> [bundle # or bundle name]</td>
|
||
<td>Stops the bundle with the given numeric or symbolic id</td>
|
||
</tr>
|
||
<tr>
|
||
<td><em>ss</em></td>
|
||
<td>Reports a summary status of all installed bundles</td>
|
||
</tr>
|
||
<tr>
|
||
<td><em>diag</em> [bundle # or bundle name]</td>
|
||
<td>Reports any resolution problems for the bundle with the given numeric or symbolic id</td>
|
||
</tr>
|
||
<tr>
|
||
<td><em>services</em> [filter]</td>
|
||
<td>Lists all available services or only services matching to <a href="http://www.ldapexplorer.com/en/manual/109010000-ldap-filter-syntax.htm">LDAP-style filter</a> (e.g. services (objectClass=”*virtage*”) - will print only services having <em>virtage</em> in their class name)</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
|
||
<p>Table 1. Equinox commands (Source: <a href="http://www.eclipse.org/equinox/documents/quickstart-framework.php">http://www.eclipse.org/equinox/documents/quickstart-framework.php</a>)</p>
|
||
|
||
<h2 id="v-equinox-bundles">V. Equinox Bundles</h2>
|
||
|
||
<p>Another part of the Equinox project is the <a href="http://www.eclipse.org/equinox/bundles/">Equinox Bundles</a> component. It consists of bundles that implement all add-on services from the OSGi specification and additional services defined in various OSGi expert groups.</p>
|
||
|
||
<p>Some of the core bundles are listed in the table below. Some or all of these bundles must be included in your runtime configuration, if you want to use the services that they provide.</p>
|
||
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th>Name</th>
|
||
<th>Bundle Symbolic Name</th>
|
||
<th>Description</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td>Declarative Services</td>
|
||
<td>org.eclipse.equinox.ds</td>
|
||
<td>An implementation of the OSGi R4 <a href="osgids.html">Declarative Services</a> specification</td>
|
||
</tr>
|
||
<tr>
|
||
<td>Event Admin Service</td>
|
||
<td>org.eclipse.equinox.event</td>
|
||
<td>OSGi R4 <a href="https://osgi.org/javadoc/r4v42/org/osgi/service/event/EventAdmin.html">Event Admin</a> Service provides an inter-bundle communication mechanism based on an event publish and subscribe model</td>
|
||
</tr>
|
||
<tr>
|
||
<td>Log Service</td>
|
||
<td>org.eclipse.equinox.log</td>
|
||
<td>This <a href="https://osgi.org/javadoc/r4v42/org/osgi/service/log/LogService.html">LogService</a> provides a general-purpose message logger for the OSGi environment</td>
|
||
</tr>
|
||
<tr>
|
||
<td>Equinox Utilities</td>
|
||
<td>org.eclipse.equinox.util</td>
|
||
<td>A library of utility classes that are frequently used from the Equinox OSGi Service implementation bundles</td>
|
||
</tr>
|
||
<tr>
|
||
<td>OSGi Services API</td>
|
||
<td>org.eclipse.osgi.service</td>
|
||
<td>This bundle contains the set of OSGi specified service APIs.</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
|
||
<p>Table 2. OSGi Bundles (Full list can be found at: <a href="http://www.eclipse.org/equinox/bundles/">http://www.eclipse.org/equinox/bundles/</a>)</p>
|
||
|
||
<h2 id="vi-p2">VI. p2</h2>
|
||
|
||
<p>The <a href="http://www.eclipse.org/equinox/p2/">p2 project</a> is a sub-project of <a href="http://www.eclipse.org/equinox/">Equinox</a> that focuses on provisioning technology for OSGi-based applications. Provisioning is the act of finding and installing new functionality and updating or removing existing functionality; it is distinct from building.</p>
|
||
|
||
<p>Although p2 has a specific support for Equinox and <a href="https://eclipse.org/eclipse/">Eclipse</a>, can be used as a general purpose provisioning infrastructure.</p>
|
||
|
||
<h3 id="1-core-concepts">1. Core Concepts</h3>
|
||
|
||
<p>p2 manages artifacts, such as <a href="http://help.eclipse.org/mars/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Fguide%2Fproduct_def_plugins.htm&cp=2_0_21_2">plug-ins(bundles)</a>, <a href="http://help.eclipse.org/mars/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Fguide%2Fproduct_def_feature.htm&cp=2_0_21_1">features</a> and <a href="http://help.eclipse.org/mars/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Fguide%2Fproduct_def.htm">products</a>. You can think of these as bags of bytes. p2 not only stores these artifacts, it also <strong>stores metadata about these artifacts</strong>, such as version information, cryptographic signatures, dependencies, platform specifics and special installation requirements.</p>
|
||
|
||
<h3 id="2-installable-unit">2. Installable Unit</h3>
|
||
|
||
<p>Every p2 artifact <em>Installable Unit or IU</em> is uniquely identified by an <strong>identifier</strong> and <strong>version number</strong>. For example, in the Equinox OSGi container from the Indigo release there is a bundle whose identifier is <em>org.eclipse.osgi</em> and version <em>3.7.0.v20110110</em>. p2 assumes that two artifacts with the same identifier and same version number are the same artifact.</p>
|
||
|
||
<p>An IU representing the SWT bundle:</p>
|
||
|
||
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>id=org.eclipse.swt, version=3.5.0, singleton=true
|
||
Capabilities:
|
||
{namespace=org.eclipse.equinox.p2.iu, name=org.eclipse.swt, version=3.5.0}
|
||
{namespace=org.eclipse.equinox.p2.eclipse.type name=bundle version=1.0.0}
|
||
{namespace=java.package, name=org.eclipse.swt.graphics, version=1.0.0}
|
||
{namespace=java.package, name=org.eclipse.swt.layout, version=1.2.0}
|
||
Requirements:
|
||
{namespace=java.package, name=org.eclipse.swt.accessibility2, range=[1.0.0,2.0.0), optional=true, filter=(&(os=linux))}
|
||
{namespace=java.package, name=org.mozilla.xpcom, range=[1.0.0, 1.1.0), optional=true, greed=false}
|
||
Updates:
|
||
{namespace=org.eclipse.equinox.p2.iu, name=org.eclipse.swt, range=[0.0.0, 3.5.0)}
|
||
</code></pre></div></div>
|
||
|
||
<p>As you can see the installable unit defines <em>capabilities</em> - what the IU expose to the rest of the world, <em>requirements</em> - what the IU needs (the requirements are satisfied by capabilities). This metadata is used in the resolvement process.</p>
|
||
|
||
<h3 id="3-update-sites">3. Update sites</h3>
|
||
|
||
<p>Installable units can be grouped into a <strong>p2 repository</strong> (also called <strong>update site</strong>). A repository is defined via its URI and can point to a local file system or to a web server. A p2 repository is also frequently called update site.</p>
|
||
|
||
<p>The most important characteristic of p2 repositories (and difference compared to the Maven repositories) is that <strong>IU do not depend directly on each other</strong>, they depend on packages identified by namespace + name + version(unless <em>Require-Bundle</em> is specified).</p>
|
||
|
||
<p>A sample p2 repository(update site) has the following layout</p>
|
||
|
||
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>features
|
||
plugins
|
||
artifacts.jar
|
||
content.jar
|
||
site.xml
|
||
</code></pre></div></div>
|
||
<p>Some of the most popular p2 repositories are <a href="http://download.eclipse.org/tools/orbit/downloads/drops/R20160221192158/">orbit p2 Repo</a> and <a href="http://download.eclipse.org/eclipse/updates">Eclipse p2 Repo</a>.</p>
|
||
|
||
<p>You can find information about the Eclipse SmartHome<strong><sup>TM</sup></strong> update sites at <a href="http://www.eclipse.org/smarthome/documentation/community/downloads.html">this link</a>.</p>
|
||
|
||
<h2 id="vii-further-reading">VII. Further Reading</h2>
|
||
|
||
<ul>
|
||
<li><a href="http://www.eclipse.org/equinox/">http://www.eclipse.org/equinox/</a></li>
|
||
<li><a href="http://www.eclipse.org/equinox/bundles/">http://www.eclipse.org/equinox/bundles/</a></li>
|
||
<li><a href="http://www.eclipse.org/equinox/documents/quickstart-framework.php">http://www.eclipse.org/equinox/documents/quickstart-framework.php</a></li>
|
||
<li><a href="http://www.eclipse.org/equinox/framework/">http://www.eclipse.org/equinox/framework/</a></li>
|
||
<li><a href="http://www.eclipse.org/equinox/incubator/">http://www.eclipse.org/equinox/incubator/</a></li>
|
||
<li><a href="https://eclipse.org/equinox/documents/eclipsist2007/EclipseSummitTurkey2007-OSGiEquinoxExplained.pdf">OSGiEquinoxExplained</a></li>
|
||
<li><a href="http://blog.idzona.com/2016/01/different-ways-to-start-the-eclipse-equinox-osgi-console.html">http://blog.idzona.com/2016/01/different-ways-to-start-the-eclipse-equinox-osgi-console.html</a></li>
|
||
<li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=371101">https://bugs.eclipse.org/bugs/show_bug.cgi?id=371101</a></li>
|
||
<li><a href="http://www.eclipse.org/equinox/p2/">http://www.eclipse.org/equinox/p2/</a></li>
|
||
<li><a href="http://wiki.eclipse.org/Equinox_P2_Resolution">http://wiki.eclipse.org/Equinox_P2_Resolution</a></li>
|
||
<li><a href="http://wiki.eclipse.org/Equinox/p2/FAQ">http://wiki.eclipse.org/Equinox/p2/FAQ</a></li>
|
||
<li><a href="https://wiki.eclipse.org/Installable_Units">https://wiki.eclipse.org/Installable_Units</a></li>
|
||
<li><a href="http://help.eclipse.org/mars/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Fguide%2Fproduct_def.htm">Products and features</a></li>
|
||
<li><a href="https://hal.archives-ouvertes.fr/hal-00870855/document">Dependency Management for the Eclipse Ecosystem, Eclipse p2, metadata and resolution, Daniel Le Berre, Pascal Rapicault,2009</a></li>
|
||
<li><a href="https://bkapukaranov.wordpress.com/category/tech/virgo/">RT meets p2</a></li>
|
||
</ul>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<footer>
|
||
<div class="container">
|
||
<div class="row">
|
||
<div class="col s12 m7">
|
||
Copyright © 2017 by the <a href="https://github.com/openhab">openHAB Community</a> and the <a href="http://www.openhabfoundation.org/">openHAB Foundation e.V.</a>
|
||
</div>
|
||
<div class="col s12 m5">
|
||
<ul class="list-inline right-align">
|
||
<li><a href="/imprint.html">Imprint</a></li>
|
||
<li><a href="/privacy.html">Privacy Policy</a></li>
|
||
<li><a href="http://www.openhab.org">openHAB Website</a></li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</footer>
|
||
<script src="/v2.1/js/jquery.min.js"></script>
|
||
<script src="/v2.1/js/jquery.scrollme.min.js"></script>
|
||
<script src="/v2.1/js/jquery.sticky.js"></script>
|
||
<script src="/v2.1/js/materialize.min.js"></script>
|
||
<script src="/v2.1/js/init.js"></script>
|
||
|
||
<script>
|
||
$(document).ready(function () {
|
||
|
||
$('#oh2-checkbox').change(function () {
|
||
if (this.checked) $('.since-2x').show('slow');
|
||
else $('.source-oh2').hide('slow');
|
||
});
|
||
|
||
$('#oh1-checkbox').change(function () {
|
||
if (this.checked) $('.since-1x').show('slow');
|
||
else $('.source-oh1').hide('slow');
|
||
});
|
||
|
||
$('#legacy-checkbox').change(function () {
|
||
if (this.checked) $('.install-legacy').show('slow');
|
||
else $('.install-legacy').hide('slow');
|
||
});
|
||
|
||
$('#manual-checkbox').change(function () {
|
||
if (this.checked) $('.install-manual').show('slow');
|
||
else $('.install-manual').hide('slow');
|
||
});
|
||
|
||
});
|
||
</script>
|
||
|
||
</body>
|
||
</html>
|
||
|