When you clone the corda or cordapp-template repos, they will default to the master branch. The master branch is being continuously developed upon, and its features may not align with the state of Corda as described in the docs. Additionally, the master branch of the CorDapp Template may break in response to changes in the main corda repo.
+When developing on Corda, you should always check out the latest stable branch instead, by running git checkout release-M7
.
Many users have faced issues when running versions of Java that are either outdated, or are produced by organisations other than Oracle (e.g. OpenJDK). The errors generated by these issues will not always clearly point to the JDK as the cause. If in doubt, check your JDK version by following the instructions here. You can download the latest version of Oracle’s JDK here.
+JavaFX is not bundled with OpenJDK. If you are using OpenJDK and get an ‘Unresolved reference: javafx’ error, this means that you need to install OpenJFX. Do this by running sudo apt install openjfx
, and possibly sudo apt install libopenjfx-jav
.
When opening a project in IDEA for the first time, you will need to build the project. You should see “Unlinked Gradle project?” +in a pop-up window in the top-right corner or in a popup alert window. It will also appear in the “Event Log” window which can be +opened by clicking on “Event Log” at the bottom right of the IDEA window. Find one of these links and click on “Import Gradle Project”.
+Wait for it to download the dependencies. You may then see another popup titled “Unindexed remote maven repositories found.” This won’t affect Corda, +so you can choose to leave them unindexed.
+If still have problems, the JetBrains website has more information on here.
+If you opened the Corda project using “Import” from the IntelliJ splash screen rather than using “Open” and then
-importing the Gradle build system from the popup bubble, then a bug in IntelliJ will cause it to wipe and recreate
-the .idea
directory where the run configurations are stored. The fix is simple and doesn’t require you to
-re-import the project: just undelete the files! You can do that by either:
If you opened the Corda project by clicking “Import Project” on the IDEA splash screen rather than clicking “Open”, a bug
+in IDEA will cause it to wipe and recreate the .idea
directory where the run configurations are stored. The fix is
+simple and doesn’t require you to re-import the project: just undelete the files! You can do that by either:
git checkout .idea/runConfigurations
to restore that part of the tree to its normal state.git checkout .idea/runConfigurations
to redownload the files.If on attempting to open the project (including importing Gradle project), IntelliJ refuses because an SDK was not selected,
-you may need to fix the project structure. Do this by following these instructions. The correct JDK is often found at a path such as jdk1.8.0_xx…/Contents/Home
Ensure that you have the Project language level set at as 8. If you are having trouble selecting the correct JDK, the -JetBrains website offers the following guidelines.
+If IDEA refuses to open a project because an SDK has not been selected, you may need to fix the project structure. Do this by following these instructions. The correct JDK is often found on a path such as jdk1.8.0_xx…/Contents/Home
. Ensure that you have the Project language level set at 8.
If you are having trouble selecting the correct JDK, the JetBrains website provides the following guidelines.
+There are two ways to configure Kotlin in IDEA:
+Configure > Plugins
tab.IDEA -> Preferences ...
(on OS X) or File -> Settings
(on Windows). Select the Plugins bar to confirm that Kotlin is installed and up-to-date.If you are still having trouble installing Kotlin, first try upgrading the Kotlin plugin. At the time of writing, you can +identify the latest version of the Kotlin plugin on this page.
+There are two ways to configure Kotlin from IntelliJ. One way is via the initial project opening screen in which you will
-need to use the Configure > Plugins
tab. The other way is when you are in an open project, then you will need to
-configure it via (on Mac) IntelliJ -> Preferences ...
, whereas on PC it is File -> Settings
. Select the plugins
-bar, confirm that Kotlin is installed and up to date.
If you are having trouble installing Kotlin, first try upgrading the Kotlin plugin. At the time of writing, you can -confirm what is the latest version of the Kotlin plugin on this page.
+After you have updated your code to the latest version from git, ensure that the gradle project is imported. Although -gradle is used via the command line, it is also integrated with IntelliJ in order for IntelliJ to determine dependencies -and index the project correctly.
-When opening a project for the first time, you should see the “Unlinked Gradle project?” pop-up window in the IntelliJ top -right corner or in a popup alert window. If you miss this, it will also appear in the “Event Log” windows which can be -opened by clicking on “Event Log” at the bottom right of the IntelliJ window. Either way, click on “Import Gradle Project”.
-Wait for it to think and download the dependencies. After that you might have another popup titled “Unindexed remote maven repositories found.” This is a general IntelliJ question and doesn’t affect Corda, therefore you can decided to index them or not. Next click on the “green arrow” next to “All tests” pop-up on the top toolbar.
-The code should build, the unit tests should show as all green.
-If still have problems, the JetBrains website has more information on gradle here.
-If you don’t want to explore or modify the code in a local IDE, you can also just use the command line and a text editor:
-git clone https://github.com/corda/corda
to download Corda core source codecd corda
./gradlew test
to run the unit tests.git pull
occasionally to upgrade the source code to the latest revisionWe have tried to make access to Corda as relatively simple as possible, using industry standard established tools. -Although it is possible to replace any of the recommendations below, we will find it a lot easier to support your efforts -if you follow our guidelines. Saying that, we are also interested in problems that arise due to different configurations.
-Corda runs in a JVM and is written predominantly in Kotlin with some example use cases demonstrated in Java that we have -incorporated to demonstrate that Kotlin and Java can work seamlessly together. We recommend the most recent production -version of Java 8. The JDK can be obtained from Oracle. -Other implementations of the JVM are not actively supported, but as mentioned, we are interested in finding out any issues you -do have with them.
-Note
-If you are using a JVM implementation other than Oracle’s you may get errors similar to Unresolved reference: javafx
.
-This means JavaFX is not bundled with the JVM and you will need to install it separately (e.g. OpenJFX is needed
-with OpenJDK).
We strongly recommend the use of IntelliJ’s Development Environment known as IDEA. Download it for free from -JetBrains. The primary reason we recommend this particular IDE is that it integrates -very well with our choice of language for Corda, “Kotlin”, as JetBrains also support the development of Kotlin.
-Warning
-When opening the Corda project for the first time from the IntelliJ splash screen, please use “Open”
-and then agree to import the Gradle project from the popup bubble. Don’t pick “Import” on the splash screen,
-because a bug in IntelliJ will cause the pre-packaged run configurations to be erased. If you see this warning
-too late, it’s no problem, just use git checkout .idea/runConfiguration
or the version control tab in IntelliJ
-to undelete the files.
Corda uses industry-standard tools to make set-up as simple as possible. Following the software recommendations below will +minimize the number of errors you encounter, and make it easier for others to provide support. However, if you do use other tools, +we’re interested to hear about any issues that arise.
+Corda is written in Kotlin and runs in a JVM. We develop against Oracle JDK 8, and other JVM implementations are not actively +supported. Oracle JDK 8 can be obtained directly from +Oracle. Installation instructions are +available for Windows, +Linux and +OS X.
+Please ensure that you keep your Oracle JDK installation updated to the latest version while working with Corda. +Even earlier versions of JDK 8 versions can cause cryptic errors.
+If you do choose to use OpenJDK instead of Oracle’s JDK, you will also need to install OpenJFX.
+Additional troubleshooting information can be found here.
Kotlin is available as a downloadable plugin to IntelliJ. Refer to IntelliJ’s instructions on -getting Started with Kotlin and IntelliJ. Additionally, -if you would like to start getting to grips with the Kotlin language, then we strongly recommend you work through some -of the tutorials (known as “koans”) as well. Also see our Further notes on Kotlin.
+Applications on Corda (CorDapps) can be written in any JVM-targeting language. However, Corda itself and most of the samples +are written in Kotlin. If you’re unfamiliar with Kotlin, there is an official getting started guide. +See also our Further notes on Kotlin.
We use git to version control Corda. The authoritative place to obtain git is from the main git website -but it may be the case that your operating system provides git with a supported utility (e.g. for Apple, git is provided along -with XCode - their free development environment). If this is the case, we would recommend you obtain git via that -supported route.
-You will need the command line package installed which you can then use natively (via the command line) or via IntelliJ -(in which case you may need to configure IntelliJ to recognise where git has been installed on your system). IntelliJ and -git configuration are quite seamless although the first time you use it, you will have to configure IntelliJ the location -of your git command installation. More details regarding this can be found -on the JetBrains website
+We strongly recommend the use of IntelliJ IDEA as an IDE, primarily due to the strength of its Kotlin integration. The free Community +Edition can be downloaded from JetBrains.
+Please make sure that you’re running the latest version of IDEA, as older versions have been known to have problems integrating with Gradle, +the build tool used by Corda.
+You’ll also want to install the Kotlin IDEA plugin by following the instructions +here.
+Additional troubleshooting information can be found here.
+We use git to version-control Corda. Instructions on installing git can be found +here.
+Following these instructions will give you access to git via the command line. It can also be useful to control git via IDEA. Instructions +for doing so can be found on the JetBrains website.
Gradle is our primary means of building Corda and managing dependencies. IntelliJ has its own view of this and occasionally -may need to be resynced from time to time. This can be done within IntelliJ by pressing the “gradle refresh” icon located -on the gradle tab (generally found on the right hand side), or by following the gradle commands specific for the task you -are performing (details expounded later). Whenever prompted about gradle, accept the defaults suggested by IntelliJ.
+We use Gradle as the build tool for Corda. However, you do not need to install Gradle itself, as a wrapper is provided.
+The wrapper can be run from the command line by using ./gradlew [taskName]
on OS X/Linux, or gradlew.bat [taskName]
on Windows.
You can check out the Corda platform source code from this repository:
+The Corda platform source code is available here:
-
and a template app that you can use as a basis for experimenting with app development from:
+and a basic CorDapp that you can use as the basis for your own CorDapps is available here:
-
You can catch up with the latest code by selecting “VCS -> Update Project” in the IntelliJ menu.
+You can clone both of these repos to your local machine by running the command git clone [repo URL]
.
By default, both repos will be on the master
branch. However, this is an unstable development branch. You should check
+out the latest milestone release (currently Milestone 7) instead by running git checkout release-M7
.
When opening a Corda project for the first time from the IDEA splash screen, please click “Open” rather than “Import Project”, +and then import the Gradle project by clicking “Import Gradle project” in the popup bubble on the lower right-hand side of the screen. +If you instead pick “Import Project” on the splash screen, a bug in IDEA will cause Corda’s pre-packaged run configurations to be erased.
+If you see this warning too late, that’s not a problem - just use git checkout .idea/runConfiguration
or the version control tab in
+IDEA to undelete the files.
IDEA’s build of the project may need to be resynced from time to time. This can be done from within IDEA by going to “View” -> “Tool Windows” -> “Gradle” +and clicking “Refresh all Gradle projects”. Whenever prompted about Gradle, accept the defaults suggested by IDEA.
See Troubleshooting, or get in touch with us either on the forums or via slack.
+The best way to check that everything is working fine is by Running the demos.
+Once you have these demos running, you may be interested in writing your own CorDapps, in which case you should refer to +The CorDapp template.
+If you encounter any issues, please see the Troubleshooting page, or get in touch with us on the +forums or via slack.
Corda is designed so that developers can easily extend its functionality by writing CorDapps -(Corda Distributed Applications). An example CorDapp is available on +(Corda Distributed Applications). Some example CorDapps are available in the Corda repo’s +samples directory. To run these yourself, make +sure you follow the instructions in Getting set up, then go to +Running the demos.
+If, after running the demos, you’re interested in writing your own CorDapps, a template CorDapp is available on Github. To get it running, follow the instructions in the readme, or watch the Corda Developers Tutorial.
-Additional CorDapp samples are available in the Corda repo’s samples -directory. These are sophisticated CorDapps that implement more complex functionality. You can find directions for -running these samples here.
From there, you’ll be in a position to start extending the example CorDapp yourself (e.g. by writing new states, contracts, -and/or flows). For this, you’ll want to refer to this docsite, and to the tutorials +and/or flows). For this, you’ll want to refer to this docsite, and to the tutorials in particular. If you get stuck, get in touch on Slack or the forum.
Once you’re familiar with Corda and CorDapp development, we’d encourage you to get involved in the development of the platform itself. Find out more about contributing to Corda.
Getting started¶
+Getting started
Key concepts¶
+Key concepts
CorDapps¶
+CorDapps
The Corda node¶
+The Corda node
Tutorials¶
+Tutorials
Other¶
+Other
Component library¶
+Component library
Appendix¶
+Appendix
Glossary¶
+Glossary
diff --git a/docs/build/html/inthebox.html b/docs/build/html/inthebox.html index 49e895f5a1..ea4e5641cb 100644 --- a/docs/build/html/inthebox.html +++ b/docs/build/html/inthebox.html @@ -34,6 +34,9 @@ + + diff --git a/docs/build/html/key-concepts-consensus-notaries.html b/docs/build/html/key-concepts-consensus-notaries.html index c0bd2b2005..a3cea12b24 100644 --- a/docs/build/html/key-concepts-consensus-notaries.html +++ b/docs/build/html/key-concepts-consensus-notaries.html @@ -34,6 +34,9 @@ + + diff --git a/docs/build/html/key-concepts-core-types.html b/docs/build/html/key-concepts-core-types.html index ca906012b7..cb72956a21 100644 --- a/docs/build/html/key-concepts-core-types.html +++ b/docs/build/html/key-concepts-core-types.html @@ -34,6 +34,9 @@ + + diff --git a/docs/build/html/key-concepts-data-model.html b/docs/build/html/key-concepts-data-model.html index d70aeae348..722202b995 100644 --- a/docs/build/html/key-concepts-data-model.html +++ b/docs/build/html/key-concepts-data-model.html @@ -34,6 +34,9 @@ + + diff --git a/docs/build/html/key-concepts-ecosystem.html b/docs/build/html/key-concepts-ecosystem.html index 2f4a5ddfae..31498adced 100644 --- a/docs/build/html/key-concepts-ecosystem.html +++ b/docs/build/html/key-concepts-ecosystem.html @@ -34,6 +34,9 @@ + + diff --git a/docs/build/html/key-concepts-financial-model.html b/docs/build/html/key-concepts-financial-model.html index 43e891ade1..17204568ce 100644 --- a/docs/build/html/key-concepts-financial-model.html +++ b/docs/build/html/key-concepts-financial-model.html @@ -34,6 +34,9 @@ + + diff --git a/docs/build/html/key-concepts-flow-framework.html b/docs/build/html/key-concepts-flow-framework.html index a73cc16a3b..3e319dd8a7 100644 --- a/docs/build/html/key-concepts-flow-framework.html +++ b/docs/build/html/key-concepts-flow-framework.html @@ -34,6 +34,9 @@ + + diff --git a/docs/build/html/key-concepts-security-model.html b/docs/build/html/key-concepts-security-model.html index 1c7f651869..29f99c6a91 100644 --- a/docs/build/html/key-concepts-security-model.html +++ b/docs/build/html/key-concepts-security-model.html @@ -34,6 +34,9 @@ + + diff --git a/docs/build/html/key-concepts-vault.html b/docs/build/html/key-concepts-vault.html index fa1c981898..d496b282eb 100644 --- a/docs/build/html/key-concepts-vault.html +++ b/docs/build/html/key-concepts-vault.html @@ -34,6 +34,9 @@ + + diff --git a/docs/build/html/key-concepts.html b/docs/build/html/key-concepts.html index b2d11fed22..45b6fc9f63 100644 --- a/docs/build/html/key-concepts.html +++ b/docs/build/html/key-concepts.html @@ -34,6 +34,9 @@ + + diff --git a/docs/build/html/loadtesting.html b/docs/build/html/loadtesting.html index df85b935a2..f9606af73e 100644 --- a/docs/build/html/loadtesting.html +++ b/docs/build/html/loadtesting.html @@ -34,6 +34,9 @@ + + diff --git a/docs/build/html/merkle-trees.html b/docs/build/html/merkle-trees.html index 4ca095d213..0692db7bdd 100644 --- a/docs/build/html/merkle-trees.html +++ b/docs/build/html/merkle-trees.html @@ -34,6 +34,9 @@ + + diff --git a/docs/build/html/messaging.html b/docs/build/html/messaging.html index aa0816e63c..a67be36d85 100644 --- a/docs/build/html/messaging.html +++ b/docs/build/html/messaging.html @@ -34,6 +34,9 @@ + + diff --git a/docs/build/html/network-simulator.html b/docs/build/html/network-simulator.html index 3552ed2acb..d615831924 100644 --- a/docs/build/html/network-simulator.html +++ b/docs/build/html/network-simulator.html @@ -34,6 +34,9 @@ + + diff --git a/docs/build/html/node-administration.html b/docs/build/html/node-administration.html index 807c3bbd1a..e47e495863 100644 --- a/docs/build/html/node-administration.html +++ b/docs/build/html/node-administration.html @@ -34,6 +34,9 @@ + + diff --git a/docs/build/html/node-explorer.html b/docs/build/html/node-explorer.html index ceec23006a..d3506146a9 100644 --- a/docs/build/html/node-explorer.html +++ b/docs/build/html/node-explorer.html @@ -34,6 +34,9 @@ + + diff --git a/docs/build/html/node-services.html b/docs/build/html/node-services.html index 2d87703745..bdc5106a01 100644 --- a/docs/build/html/node-services.html +++ b/docs/build/html/node-services.html @@ -34,6 +34,9 @@ + + diff --git a/docs/build/html/objects.inv b/docs/build/html/objects.inv index 33386b4fcd..a0758322ad 100644 Binary files a/docs/build/html/objects.inv and b/docs/build/html/objects.inv differ diff --git a/docs/build/html/oracles.html b/docs/build/html/oracles.html index 0e0b8e5c4a..5b48af4a45 100644 --- a/docs/build/html/oracles.html +++ b/docs/build/html/oracles.html @@ -34,6 +34,9 @@ + + diff --git a/docs/build/html/permissioning.html b/docs/build/html/permissioning.html index 94c389f9a9..47615e10e1 100644 --- a/docs/build/html/permissioning.html +++ b/docs/build/html/permissioning.html @@ -34,6 +34,9 @@ + + diff --git a/docs/build/html/persistence.html b/docs/build/html/persistence.html index 27809bbbac..499c629708 100644 --- a/docs/build/html/persistence.html +++ b/docs/build/html/persistence.html @@ -34,6 +34,9 @@ + + diff --git a/docs/build/html/publishing-corda.html b/docs/build/html/publishing-corda.html index c4f3ae8957..407d5a262b 100644 --- a/docs/build/html/publishing-corda.html +++ b/docs/build/html/publishing-corda.html @@ -34,6 +34,9 @@ + + diff --git a/docs/build/html/release-notes.html b/docs/build/html/release-notes.html index ab8a7304e4..21a42d326a 100644 --- a/docs/build/html/release-notes.html +++ b/docs/build/html/release-notes.html @@ -34,6 +34,9 @@ + + @@ -165,6 +168,7 @@ API reference: Kotlin/ Secure coding guidelinesHere are brief summaries of what’s changed between each snapshot release.
+API:
++++
+- +
Party
equality is now based on the owning key, rather than the owning key and name. This is important for +party anonymisation to work, as each key must identify exactly one party.
The H2 web console should start up in a web browser tab. To connect we first need to obtain a JDBC connection string. Each node outputs its connection string in the terminal window as it starts up. In a terminal window where a node is running, look for the following string:
-Database connection url is : jdbc:h2:tcp://10.18.0.150:56736/node
Database connection url is : jdbc:h2:tcp://10.18.0.150:56736/node
You can use the string on the right to connect to the h2 database: just paste it into the JDBC URL field and click Connect. You will be presented with a web application that enumerates all the available tables and provides an interface for you to query them using SQL
The h2 web console should start up in a web browser tab. To connect we first need to obtain a JDBC connection string. Each node outputs its connection string in the terminal window as it starts up. In a terminal window where a node is running, look for the following string:
-Database connection URL is : jdbc:h2:tcp://10.18.0.150:56736/node
Database connection URL is : jdbc:h2:tcp://10.18.0.150:56736/node
you can use the string on the right to connect to the h2 database: just paste it in to the JDBC URL field and click Connect. You will be presented with a web application that enumerates all the available tables and provides an interface for you to query them using SQL.
diff --git a/docs/build/html/tutorial-integration-testing.html b/docs/build/html/tutorial-integration-testing.html index fa541b3634..84af20ff8f 100644 --- a/docs/build/html/tutorial-integration-testing.html +++ b/docs/build/html/tutorial-integration-testing.html @@ -34,6 +34,9 @@ + + diff --git a/docs/build/html/tutorial-test-dsl.html b/docs/build/html/tutorial-test-dsl.html index 71c124f20d..68da1ae5e1 100644 --- a/docs/build/html/tutorial-test-dsl.html +++ b/docs/build/html/tutorial-test-dsl.html @@ -34,6 +34,9 @@ + + diff --git a/docs/build/html/using-a-notary.html b/docs/build/html/using-a-notary.html index 43a5ea9198..e475d179b1 100644 --- a/docs/build/html/using-a-notary.html +++ b/docs/build/html/using-a-notary.html @@ -34,6 +34,9 @@ + +