Core framework of openHAB
Go to file
Wouter Born 648cfac66d Avoid ByteBuffer incompatibility when compiling with JDK9+ (#686)
Incompatible code can be used/generated when using JDK8 on the command line and JDK11 in Eclipse (or vice versa).

The explanation for this is given in https://github.com/apache/felix/pull/114 :

Java 9 introduces overridden methods with covariant return types for the following methods in java.nio.ByteBuffer:

* position​(int newPosition)
* limit​(int newLimit)
* flip​()
* clear​()
* mark​()
* reset​()
* rewind​()

In Java 9 they all now return ByteBuffer, whereas the methods they override return Buffer,
resulting in exceptions like this when executing on Java 8 and lower:
java.lang.NoSuchMethodError: java.nio.ByteBuffer.limit(I)Ljava/nio/ByteBuffer
This is because the generated byte code includes the static return type of the method, which is not found on Java 8 and lower because the overloaded methods with covariant return types don't exist (the issue appears even with source and target 8 or lower in compilation parameters).
The solution is to cast ByteBuffer instances to Buffer before calling the method.

Signed-off-by: Wouter Born <github@maindrain.net>
2019-03-31 14:45:29 +02:00
bom Ignore and remove Eclipse project specific settings (#677) 2019-03-26 13:04:09 +01:00
bundles Adding DataAmount (bit and derivatives) and DataTransferRates (bits per second) (#681) 2019-03-30 21:43:15 +01:00
demo Ignore and remove Eclipse project specific settings (#677) 2019-03-26 13:04:09 +01:00
features bump SAT version to 0.6.1 (#679) 2019-03-26 13:05:37 +01:00
itests Avoid ByteBuffer incompatibility when compiling with JDK9+ (#686) 2019-03-31 14:45:29 +02:00
licenses/epl-2.0 mavenize openHAB and integrate mavenized ESH repository (#467) 2019-01-28 13:07:31 +01:00
notes mavenize openHAB and integrate mavenized ESH repository (#467) 2019-01-28 13:07:31 +01:00
tools Reenable SAT (#626) 2019-03-14 19:48:28 +01:00
.gitignore Ignore and remove Eclipse project specific settings (#677) 2019-03-26 13:04:09 +01:00
.travis.yml Update Travis configuration (#643) 2019-03-12 13:02:43 +01:00
CONTRIBUTING.md Replaces 'Eclipse SmartHome' with 'openHAB' in text (#581) 2019-02-15 10:46:37 +01:00
LICENSE Changed license from EPL v1 to EPL v2 (#466) 2019-01-16 22:59:49 +01:00
NOTICE Add NOTICE file (#631) 2019-03-06 16:09:24 +01:00
pom.xml Add unleash plugin to pom.xml (#675) 2019-03-23 10:53:26 +01:00
README.md Update README.md (#498) 2019-02-01 16:18:41 +01:00

openHAB 2 Core bundles

This project contains core bundles of the openHAB 2 runtime.

Building and running the project is fairly easy if you follow the steps detailed below.

Please note that openHAB 2 Core is not a product itself, but a framework to build solutions on top. It is picked up by the main openHAB distribution build.

This means that what you build is primarily an artifact repository of OSGi bundles that can be used within smart home products.

1. Prerequisites

The build infrastructure is based on Maven. If you know Maven already then there won't be any surprises for you. If you have not worked with Maven yet, just follow the instructions and everything will miraculously work ;-)

What you need before you start:

Make sure that the "mvn" command is available on your path

2. Checkout

Checkout the source code from GitHub, e.g. by running

git clone https://github.com/openhab/openhab-core.git

3. Building with Maven

To build this project from the sources, Maven takes care of everything:

  • set MAVEN_OPTS to "-Xms512m -Xmx1024m"
  • change into the openhab-core directory ("cd openhab-core“)
  • run "mvn clean install" to compile and package all sources

If there are tests that are failing occasionally on your local build, run mvn -DskipTests=true clean install instead to skip them.

How to contribute

If you want to become a contributor to the project, please read about contributing and check our guidelines first.