Git Product home page Git Product logo

h3-java's Introduction

H3 Logo

H3-Java

tests Coverage Status License Maven Central H3 Version

This library provides Java bindings for the H3 Core Library. For API reference, please see the H3 Documentation.

Usage

Add it to your pom.xml:

<dependency>
    <groupId>com.uber</groupId>
    <artifactId>h3</artifactId>
    <version>4.1.0</version>
</dependency>

Or, using Gradle:

compile("com.uber:h3:4.1.0")

Encode a location into a hexagon address:

H3Core h3 = H3Core.newInstance();

double lat = 37.775938728915946;
double lng = -122.41795063018799;
int res = 9;

String hexAddr = h3.latLngToCellAddress(lat, lng, res);

Decode a hexagon address into coordinates:

List<LatLng> LatLngs = h3.cellToGeoBoundary(hexAddr);

Supported Operating Systems

H3-Java provides bindings to the H3 library, which is written in C. The built artifact supports the following:

Operating System Architectures
Linux x64, x86, ARM64, ARMv5, ARMv7, PPC64LE, s390x
Windows x64, x86
Darwin (Mac OSX) x64, ARM64
FreeBSD x64
Android ARM, ARM64

You may be able to build H3-Java locally if you need to use an operating system or architecture not listed above.

Development

Building the library requires a JDK, Maven, CMake, and a C compiler. To install to your local Maven cache, run:

mvn install

To build the library, run:

mvn package

To format source code as required by CI, run:

mvn com.spotify.fmt:fmt-maven-plugin:format

Additional information on how the build process works is available in the build process documentaiton.

Building on FreeBSD

# To install build dependencies
sudo pkg install openjdk11 maven cmake bash
# Ensure /usr/local/openjdk11/bin is on your path

Javadocs

To build Javadocs documentation:

mvn site

Then open the file target/site/apidocs/index.html.

Benchmarking

To run benchmarks, either execute them from IntelliJ or run the following from shell: (Replace the class name as needed)

mvn exec:exec -Dexec.executable="java" -Dexec.args="-classpath %classpath com.uber.h3core.benchmarking.H3CoreBenchmark" -Dexec.classpathScope="test"

Contributing

Pull requests and Github issues are welcome. Please see our contributing guide for more information.

Before we can merge your changes, you must agree to the Uber Contributor License Agreement.

Legal and Licensing

H3-Java is licensed under the Apache 2.0 License.

DGGRID Copyright (c) 2015 Southern Oregon University

h3-java's People

Contributors

boyxgc avatar dcj avatar dependabot[bot] avatar dfellis avatar isaacbrodsky avatar tanapoln avatar willcohen avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

h3-java's Issues

java.lang.UnsatisfiedLinkError on v4 in Windows

Getting java.lang.UnsatisfiedLinkError: No native resource found at /windows-x64/libh3-java.dll when trying to load dlls when calling H3Core.newInstance() on V4.

It appears that the H3 V4 builds on maven and other sites are missing the specific relative path /windows-x64/libh3-java.dll. Iโ€™d run into this same issue when trying out the release candidates. V3 builds had the [os]-[architecture] path. You can see the difference below.

V4 V3
image image

When initializing with H3Core.newInstance(), the class loader searches for [os]-[architecture]. If you manually change the windows dll naming back to V3 (remove "-static"), it'll work.

Looks like there weren't any changes in the build script since last release. Curiously if it's possible to get the naming switched back, wondering if this is an issue with Dockcross (if you still use that for cross compiling).

Update H3 Docs to allow usage example language toggle

The README tells the users of h3-java to refer to the H3 docs, but all of the examples there are in C.

We should add examples in Java, now, and allow the reader to toggle between languages.

I'm willing to work on this, myself, but I figured there should be a discussion because:

  1. The documentation will need to link to the h3-java project, as well.
  2. Should the documentation only include examples in languages officially supported by Uber?
  3. If not, what is the threshold for being considered for inclusion? 100% coverage of the API?

h3SetToMultiPolygon cannot convert multipolygons correctly

I have a list of hex addresses:

89283082867ffff
8928308280fffff
8928308282bffff
8928308283bffff
89283082873ffff
89283082863ffff
89283082eafffff
89283082ea3ffff

which looks like this in map:
image

where can see, there are two polygons in this multiPolygon, the bigger one , the smaller one. The bigger one misses the hexagon in the center, so it has a hole.

Using h3SetToMultiPolygon to convert the h3 above to multipolygon, the coordinates are in the form of containing only one polygon, where all 3 linear rings are in the same polygon.

[
    [
        [
          coordinates ... of biggest ring
        ],
        [
          coordinates ... of hole ring
        ],
        [
          coordinates ... of island ring
        ]
    ]
]

While I was expecting 2 polygons in the list:

[
    [
        [
          coordinates ... of biggest ring
        ],
        [
          coordinates ... of hole ring
        ]
    ],
    [
        [
          coordinates ... of island ring
        ]
    ]
]

Upgrade h3 version in Java monorepo

Java mono repo is on v3.6.3 for h3. This is causing build failures on M1 laptops due to the following exception. The suggested fix for this is to upgrade h3 version to 3.7.x or greater. We need a new point release with support for M1 + older glibc (2.26)

java.lang.UnsatisfiedLinkError: No native resource found at /darwin-arm64/libh3-java.dylib at com.uber.h3core.H3CoreLoader.copyResource(H3CoreLoader.java:68) at com.uber.h3core.H3CoreLoader.loadNatives(H3CoreLoader.java:120) at com.uber.h3core.H3CoreLoader.loadNatives(H3CoreLoader.java:89) at com.uber.h3core.H3Core.newInstance(H3Core.java:79) at com.uber.sia.common.geo.H3GeoAnalyzer.<init>(H3GeoAnalyzer.java:34) at com.uber.sia.common.geo.GeoHelper.<init>(GeoHelper.java:76) at com.uber.marketplace.fulfillment.indexing.gateway.core.sia.ingestion.LocationMapper.analyzeLocation(LocationMapper.java:112)

grep h3 /home/user/fievel/3rdparty/jvm/com/uber/BUCK name = "h3-3.6.3.jar", maven_coords = "com.uber:h3:jar:3.6.3",

I am unable to use my local environment for development and have to use devpod which is quite slow and is affecting productivity.

Why these are different h3.getToH3(..) and h3.h3ToParent(..)?

public class H3CoreTests extends TestCase {
    public void test_foobar() throws IOException {
        H3Core h3 = H3Core.newInstance();

        double lat = 37.5108269;
        double lon = 127.029288;

        Map<Integer, Long> h3IndexesV1 = new TreeMap<>();
        Map<Integer, Long> h3IndexesV2 = new TreeMap<>();
        long h3_index_r_15 = h3.geoToH3(lat, lon, 15);
        for (int res = 0; res <= 15; res++) {
            h3IndexesV1.put(res, h3.geoToH3(lat, lon, res));
            h3IndexesV2.put(res, h3.h3ToParent(h3_index_r_15, res));
        }
        for (int res = 0; res <= 15; res++) {
            assertEquals("resolution [" + res + "]", h3IndexesV1.get(res), h3IndexesV2.get(res));
        }
    }
}


// output: h3IndexesV1.toString()
// {0=577340361605644287, 1=581826369046970367, 2=586328319406899199, 3=590831506717409279, 4=595335097754845183, 5=599838692013506559, 6=604342291238223871, 7=608845890748153855, 8=613349490360844287, 9=617853089986904063, 10=622356689614209023, 11=626860289241575423, 12=631363888868943359, 13=635867488496313791, 14=640371088123683895, 15=644874687751054761}

// output: h3IndexesV2.toString()
// {0=577340361605644287, 1=581826369046970367, 2=586328319406899199, 3=590831506717409279, 4=595335097754845183, 5=599838692013506559, 6=604342291238223871, 7=608845890748153855, 8=613349490360844287, 9=617853089986904063, 10=622356689614209023, 11=626860289241575423, 12=631363888868943359, 13=635867488496313791, 14=640371088123684271, 15=644874687751054761}

// result: 
// junit.framework.AssertionFailedError: resolution [14] 
// Expected :640371088123683895
// Actual   :640371088123684271
  • 14=640371088123683895 in h3IndexesV1.toString()
  • 14=640371088123684271 in h3IndexesV2.toString()

I wonder why these values are different each other when its resolution value 14.

Run H3-java on CentOS 6.6 Spark Cluster

@isaacbrodsky @dfellis
I'm using H3-java on CentOS 6.6 spark cluster of my company, when I new H3Core instance, the error log shows that Glibc2.14 was not found.
Could you compile a "libh3-java.so" on CentOS 6.6 for me๏ผŸ That would be very grateful๏ผ

Build all artifacts in Travis

When building the artifact in Travis CI, we should build an artifact with Linux x64, x86, Mac OSX, etc. binaries.

java.io.IOException: No such file or directory in H3Core.newInstance()

Hi team, I am using H3.3.6.3 in a Buildkite job. The job will run Java Jar dozens of times to process different files. Each time, it initializes an H3 instance. It works fine at first. And It throws an exception near the end. The Buildkite image is based on Debian buster which has Glibc version 2.23.

`

Exception in thread "main" java.lang.ExceptionInInitializerError

ย  | Caused by: java.lang.RuntimeException: java.io.IOException: No such file or directory
ย  | ... 3 more
ย  | Caused by: java.io.IOException: No such file or directory
ย  | at java.base/java.io.UnixFileSystem.createFileExclusively(Native Method)
ย  | at java.base/java.io.File.createTempFile(File.java:2129)
ย  | at java.base/java.io.File.createTempFile(File.java:2175)
ย  | at com.uber.h3core.H3CoreLoader.loadNatives(H3CoreLoader.java:112)
ย  | at com.uber.h3core.H3CoreLoader.loadNatives(H3CoreLoader.java:87)
ย  | at com.uber.h3core.H3Core.newInstance(H3Core.java:79)
ย  | ... 3 more

`

[Feature Req] Polyfill for multi level inclusion/exclusion

Curious if there is any plan to add polyfill support for more complex geofences that have inclusions within 'holes'

For instance in s2, inclusion/exclusion is determined by the number of geofences a point is contained by and therefore doesn't require an explicit 'holes' input in the api.

Snippet from s2 java comments:
/*

  • An S2Polygon is an S2Region object that represents a polygon. A polygon
  • consists of zero or more {@link S2Loop loops} representing "shells" and
  • "holes". All loops should be oriented CCW, i.e. the shell or hole is on the
  • left side of the loop. Loops may be specified in any order. A point is
  • defined to be inside the polygon if it is contained by an odd number of
  • loops.
    */

OOM handling in C

The h3 C library does not handle the case of malloc/calloc/realloc returning NULL in a robust manner. If assertions are enabled, the library crashes, otherwise it will use the NULL pointer leading to undefined behavior. While I understand the convenience of this design in the C library, not propagating OOM errors up the stack means binding code like this is not reliable:

jclass oome = (**env).FindClass(env, "java/lang/OutOfMemoryError");
Users are likely to see a sudden fatal crash in the Java process and may not see any hint to the C assertion. Practically, consider using return codes to handle OOM up the stack for your C functions so you can handle them probably here.

java.lang.UnsatisfiedLinkError: Can't load library: /tmp/libh3-java6591047064313530667.so

Hi,
I have a flink job, H3Core.newInstance() is initialized in the open method , when restore from flink state , it throws an exception like this

java.lang.UnsatisfiedLinkError: Can't load library: /tmp/libh3-java6591047064313530667.so

at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1820)

at java.lang.Runtime.load0(Runtime.java:810)

at java.lang.System.load(System.java:1086)

at com.uber.h3core.H3CoreLoader.loadNatives(H3CoreLoader.java:125)

at com.uber.h3core.H3CoreLoader.loadNatives(H3CoreLoader.java:89)

at com.uber.h3core.H3Core.newInstance(H3Core.java:73)

at com.sankuai.meituan.banma.rtdw.flink.business.function.BusinessWorkStatusH3ClearRiderRichSinkFunction.open(BusinessWorkStatusH3ClearRiderRichSinkFunction.java:60)

at org.apache.flink.api.common.functions.util.FunctionUtils.openFunction(FunctionUtils.java:34)

at org.apache.flink.streaming.api.operators.AbstractUdfStreamOperator.open(AbstractUdfStreamOperator.java:102)

at org.apache.flink.streaming.api.operators.StreamSink.open(StreamSink.java:46)

at org.apache.flink.streaming.runtime.tasks.OperatorChain.initializeStateAndOpenOperators(OperatorChain.java:466)

at org.apache.flink.streaming.runtime.tasks.StreamTask.lambda$beforeInvoke$2(StreamTask.java:547)

at org.apache.flink.streaming.runtime.tasks.StreamTaskActionExecutor$1.runThrowing(StreamTaskActionExecutor.java:50)

at org.apache.flink.streaming.runtime.tasks.StreamTask.beforeInvoke(StreamTask.java:537)

at org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:577)

at org.apache.flink.runtime.taskmanager.Task.doRun(Task.java:767)

at org.apache.flink.runtime.taskmanager.Task.run(Task.java:578)

at java.lang.Thread.run(Thread.java:748)

Can't use H3 with Spring Boot

Hello,
I am trying to use H3 in a Spring Boot project, in which I'm using gradle 7.6. I am not able to import uber h3 in my build.gradle file. I added " implementation 'com.uber:h3' " in my build.gradle file, in the "dependencies" object. I get this error:

Execution failed for task ':compileJava'.
> Could not resolve all files for configuration ':compileClasspath'.
   > Could not find com.uber:h3:.
     Required by:
         project :

Is it not possible to use h3 with gradle 7.6?

JVM Crashing in Dockerized Alpine Environment

This is the code I'm using to reproduce the problem:

import com.uber.h3core.H3Core;

import java.io.IOException;

public class Main {
    private static final double[][] coordinates = new double[][] {
            {0.0    , 90.0    },
            {13.5467, -19.2347},
            {13.5467, -30.2347},
            {17.5467, -30.2347}
    };

    public static void main(String[] args) throws IOException {
        H3Core h3Core = H3Core.newInstance();
        for (double[] coordinate: coordinates) {
            long h3Id = h3Core.geoToH3(coordinate[0], coordinate[1], 12);
            System.out.printf("Lat: %s Lng: %s H3: %d%n", coordinate[0], coordinate[1], h3Id);
        }
    }
}

I'm using the gradle docker plugin to build the docker images. The project with the crashing scenario and setup is available here.
To build the image, run ./gradlew dockerBuildImage. Then run docker run -it divinomenezes/h3-issue-test:latest to run the code. You should be able to run normally.
If you change the build.gradle:27 as described in the comment and rerun the steps above, you should see the following error:

#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x0000000000003b36, pid=1, tid=0x00007fbaf7e76ae8
#
# JRE version: OpenJDK Runtime Environment (8.0_171-b11) (build 1.8.0_171-b11)
# Java VM: OpenJDK 64-Bit Server VM (25.171-b11 mixed mode linux-amd64 compressed oops)
# Derivative: IcedTea 3.8.0
# Distribution: Custom build (Wed Jun 13 18:28:11 UTC 2018)
# Problematic frame:
# C  0x0000000000003b36
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# An error report file with more information is saved as:
# //hs_err_pid1.log
#
# If you would like to submit a bug report, please include
# instructions on how to reproduce the bug and visit:
#   http://icedtea.classpath.org/bugzilla
#

The hs_err_pid1.log is also available here.

h3ToGeo instantiates Vector2D incorrectly

    public Vector2D h3ToGeo(long h3) {
        double[] coords = new double[2];
        h3Api.h3ToGeo(h3, coords);
        Vector2D out = new Vector2D(
                constrainLat(toDegrees(coords[0])),
                constrainLng(toDegrees(coords[1]))
        );
        return out;
    }

Is incorrect. Vector2d is defined as - Vector2d(double x, double y)

Lat should be y and Lng should be x

Tested using the following groovy script

import com.uber.h3core.H3Core

H3Core h3 = H3Core.newInstance()
int res = 8
double bigBenLat = 51.5007292
double bigBenLon = -0.1246254

long index = h3.geoToH3(bigBenLat, bigBenLon, res)

double reasonableTolerance = 0.5
assert h3.h3ToGeo(index).y < (bigBenLat + reasonableTolerance) && h3.h3ToGeo(index).y > (bigBenLat + reasonableTolerance)  :
        "Oh no! The index is a long way from Big Ben. The Big Ben lat is $bigBenLat and h3 index centre is ${h3.h3ToGeo(index).y}"
assert h3.h3ToGeo(index).x < (bigBenLon + reasonableTolerance) && h3.h3ToGeo(index).x > (bigBenLon + reasonableTolerance)  :
        "Oh no! The index is a long way from Big Ben. The Big Ben lat is $bigBenLon and h3 index centre is ${h3.h3ToGeo(index).x}"

which gets the following stack trace

Caught: java.lang.AssertionError: Oh no! The index is a long way from Big Ben. The Big Ben lat is 51.5007292 and h3 index centre is -0.1260662704929132. Expression: ((h3.h3ToGeo(index).y < (bigBenLat + reasonableTolerance)) && (h3.h3ToGeo(index).y > (bigBenLat + reasonableTolerance))). Values: bigBenLat = 51.5007292, reasonableTolerance = 0.5, bigBenLat = 51.5007292, reasonableTolerance = 0.5
java.lang.AssertionError: Oh no! The index is a long way from Big Ben. The Big Ben lat is 51.5007292 and h3 index centre is -0.1260662704929132. Expression: ((h3.h3ToGeo(index).y < (bigBenLat + reasonableTolerance)) && (h3.h3ToGeo(index).y > (bigBenLat + reasonableTolerance))). Values: bigBenLat = 51.5007292, reasonableTolerance = 0.5, bigBenLat = 51.5007292, reasonableTolerance = 0.5

Compact Cells Failing on Certain Large Polygons

We have observed that after version 3.7.0 that certain large polygons are failing the compactCells methods with the following error: `com.uber.h3core.exceptions.H3Exception: Resolution argument was outside of acceptable range

at com.uber.h3core.NativeMethods.compactCells(Native Method)
at com.uber.h3core.H3Core.compactCells(H3Core.java:781)`

We are using a resolution of 6 which produces the same error but has 1.5 million in the collection. Here is the collection Long we are sending to compactCells on resolution 1: [581487719465615359, 582222193232969727, 581193050349371391, 582613619372457983, 581927524116725759, 581584476488859647, 581241428860993535, 581289807372615679, 581681233512103935, 581729612023726079, 581434942907482111, 582169416674836479, 581483321419104255, 582217795186458623, 581188652302860287, 581923126070214655, 581580078442348543, 581237030814482431, 581285409326104575, 581676835465592831, 581725213977214975, 581087497233104895, 582165018628325375, 581478923372593151, 581184254256349183, 582604823279435775, 581918728023703551, 581575680395837439, 581232632767971327, 582015485046947839, 581672437419081727, 581720815930703871, 581426146814459903, 581083099186593791, 581474525326082047, 581179856209838079, 581571282349326335, 581228234721460223, 581716417884192767, 581078701140082687, 581470127279570943, 582204601046925311, 581566884302815231, 581223836674949119, 582006688953925631, 581663641326059519, 581712019837681663, 581025924581949439, 581074303093571583, 582200203000414207, 582248581512036351, 581219438628438015, 581659243279548415, 580973148023816191, 581707621791170559, 581461331186548735, 582244183465525247, 581215040581926911, 581654845233037311, 581311797605171199, 582389319000391679, 581017128488927231, 581945116302770175, 581650447186526207, 581307399558660095, 581698825698148351, 581012730442416127, 581452535093526527, 581940718256259071, 581646049140015103, 581303001512148991, 581694427651637247, 581008332395905023, 581448137047015423, 581201846442393599, 581936320209747967, 581593272581881855, 581641651093503999, 581298603465637887, 581690029605126143, 581003934349393919, 581443739000504319, 581100691372638207, 582178212767858687, 582226591279480831, 581197448395882495, 581931922163236863, 581588874535370751, 582323348302725119, 581637253046992895, 581294205419126783, 581685631558615039, 581734010070237183, 581439340953993215]

Failure on MacBook M1

Hi,

I tried to build our software using the H3 library on a new MacBook M1. Unfortunately I do get the following error:

java.lang.UnsatisfiedLinkError: No native resource found at /darwin-arm64/libh3-java.dylib at com.uber.h3core.H3CoreLoader.copyResource(H3CoreLoader.java:68) at com.uber.h3core.H3CoreLoader.loadNatives(H3CoreLoader.java:120) at com.uber.h3core.H3CoreLoader.loadNatives(H3CoreLoader.java:89) at com.uber.h3core.H3Core.newInstance(H3Core.java:79)

I already found out that this is because there simply is no native library for the combination of operating system (darwin) and architecture (arm64). So my questions are: Is a fix already planned? Is there a workaround?

Double precision of digits smaller by half for java bindings vs. python bindings

@transient lazy val h3 = H3Core.newInstance()
val h3INdex = h3.geoToH3(48.209046, 16.368850, 7)
h3INdex: Long = 608515207542603775
scala> h3.h3ToGeoBoundary(h3INdex)
res11: java.util.List[com.uber.h3core.util.GeoCoord] = [GeoCoord{lat=48,218097, lng=16,345586}

The number of digits 48,218097 different from the python-binding there, it has 14 digits: 48.21809738156692

How can I get this precision also for the java bindings?

Note I ran these snippets in a scala shell but it should not really make a difference.

edit

python code
h3.h3_to_geo_boundary(h3.geo_to_h3(48.209046, 16.368850, 7)) outputs:

[[48.21809738156692, 16.345586457608764],
 [48.20585865184859, 16.345938048970673],
 [48.20032251826552, 16.362946520461485],
 [48.20702432725267, 16.37960717187623],
 [48.219263502809156, 16.379260992862143],
 [48.224800424038904, 16.362248749695652]]

Android, can't use library

How I can use this library in Android oS?

I got following exception:
java.lang.UnsatisfiedLinkError: No native resource found at /android-armv7l/libh3-java.so
at com.uber.h3core.H3CoreLoader.copyResource(H3CoreLoader.java:67)
at com.uber.h3core.H3CoreLoader.loadNatives(H3CoreLoader.java:99)
at com.uber.h3core.H3Core.newInstance(H3Core.java:68)

Thank you.

JVM crash on large polyfills

When the following is added to TestH3Core.java, the jvm crashes out on h3Api.polyfill before completing the tests. The polyfill works at resolution 9.

    @Test
    public void testPolyfillLarge() {
        List<Long> hexagons = h3.polyfill(
                ImmutableList.<GeoCoord>of(
                        new GeoCoord(41.5, -70.4),
                        new GeoCoord(41.5, -69.8),
                        new GeoCoord(42.1, -69.8),
                        new GeoCoord(42.1, -70.4)
                ), null,
                10
        );

        assertTrue(hexagons.size() > 1000);
    }

Is this an issue with the java wrapper, or is this impossible to do with the core library?

I don't know C but adding a similar test to h3 naively copying the existing styles to testPolyfill.c at level 11 still seems to work. If I increase the resolution up past 11 it eventually segfaults there too.

GeoCoord capeCodVerts[] = {
        {0.7243116395776468, -1.2287117934040082},  {0.7243116395776468, -1.218239817892042},
        {0.7347836150896128, -1.218239817892042}, {0.7347836150896128, -1.2287117934040082}};
Geofence capeCodGeofence;
GeoPolygon capeCodGeoPolygon;

capeCodGeofence.numVerts = 4;
capeCodGeofence.verts = capeCodVerts;
capeCodGeoPolygon.geofence = capeCodGeofence;
capeCodGeoPolygon.numHoles = 0;

TEST(polyfillLarge) {
    int numHexagons = H3_EXPORT(maxPolyfillSize)(&capeCodGeoPolygon, 12);
    H3Index* hexagons = calloc(numHexagons, sizeof(H3Index));

    H3_EXPORT(polyfill)(&capeCodGeoPolygon, 11, hexagons);
    int actualNumHexagons = 0;
    for (int i = 0; i < numHexagons; i++) {
        if (hexagons[i] != 0) {
            actualNumHexagons++;
        }
    }
    
    t_assert(actualNumHexagons > 10000, "got lots of hexagons");
    free(hexagons);
}

CCLA Contact

Hi, I manage the CCLA for Amazon and I think our contact has left. We used to email Jim Jagielski to add new contributors to our CLA, but I think he has left Uber. We have an employee who would like to contribute to this project so how should I go about adding them to the Amazon CCLA?
thanks!

Error building cross-compile on M1 macbook (ARM)

[INFO] [INFO] + target/h3-java-build-android-arm/dockcross --args '-v /opt/homebrew/opt/openjdk@17/:/java' src/main/c/h3-java/build-h3-docker.sh target/h3-java-build-android-arm true target/cmake-3.23.2-linux-x86_64
[INFO] [INFO] WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested
[INFO] [INFO] + BUILD_ROOT=target/h3-java-build-android-arm
[INFO] [INFO] + UPGRADE_CMAKE=true
[INFO] [INFO] + CMAKE_ROOT=target/cmake-3.23.2-linux-x86_64
[INFO] [INFO] + true
[INFO] [INFO] + pushd target/cmake-3.23.2-linux-x86_64
[INFO] [INFO] + '[' -e cmake-3.23.2-linux-x86_64.sh ']'
[INFO] [INFO] + wget -nv https://github.com/Kitware/CMake/releases/download/v3.23.2/cmake-3.23.2-linux-x86_64.sh
[INFO] [INFO] /work/target/cmake-3.23.2-linux-x86_64 /work
[INFO] [INFO] 2023-01-19 18:03:09 URL:https://objects.githubusercontent.com/github-production-release-asset-2e65be/537699/91d64bef-2691-4691-95c6-40c33d8000dc?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20230119%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20230119T180244Z&X-Amz-Expires=300&X-Amz-Signature=151b9ddbb649a72f82e740cb94f441942370e231e4489a72057c3f0783982efd&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=537699&response-content-disposition=attachment%3B%20filename%3Dcmake-3.23.2-linux-x86_64.sh&response-content-type=application%2Foctet-stream [46025081/46025081] -> "cmake-3.23.2-linux-x86_64.sh" [1]
[INFO] [INFO] + echo '5cca63af386e5bd0bde67c87ffac915865abd7dcc48073528f58645abda8f695  cmake-3.23.2-linux-x86_64.sh'
[INFO] [INFO] + sha256sum -c cmake-3.23.2-SHA-256.txt
[INFO] [INFO] cmake-3.23.2-linux-x86_64.sh: OK
[INFO] [INFO] + '[' -e ./bin/cmake ']'
[INFO] [INFO] + chmod a+x cmake-3.23.2-linux-x86_64.sh
[INFO] [INFO] + ./cmake-3.23.2-linux-x86_64.sh --skip-license
[INFO] [INFO] CMake Installer Version: 3.23.2, Copyright (c) Kitware
[INFO] [INFO] This is a self-extracting archive.
[INFO] [INFO] The archive will be extracted to: /work/target/cmake-3.23.2-linux-x86_64
[INFO] [INFO]
[INFO] [INFO] Using target directory: /work/target/cmake-3.23.2-linux-x86_64
[INFO] [INFO] Extracting, please wait...
[INFO] [INFO]
[INFO] [INFO] Unpacking finished successfully
[INFO] [INFO] ++ pwd
[INFO] [INFO] + export PATH=/work/target/cmake-3.23.2-linux-x86_64/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
[INFO] [INFO] + PATH=/work/target/cmake-3.23.2-linux-x86_64/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
[INFO] [INFO] + cmake --version
[INFO] [INFO] cmake version 3.23.2
[INFO] [INFO]
[INFO] [INFO] CMake suite maintained and supported by Kitware (kitware.com/cmake).
[INFO] [INFO] + popd
[INFO] [INFO] /work
[INFO] [INFO] + cd target/h3-java-build-android-arm
[INFO] [INFO] + mkdir -p build
[INFO] [INFO] + pushd build
[INFO] [INFO] /work/target/h3-java-build-android-arm/build /work/target/h3-java-build-android-arm
[INFO] [INFO] + cmake -DBUILD_SHARED_LIBS=OFF -DCMAKE_C_STANDARD_REQUIRED=ON -DCMAKE_C_STANDARD=99 -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY=lib ../../h3
[INFO] [INFO] -- The C compiler identification is Clang 11.0.5
[INFO] [INFO] -- Detecting C compiler ABI info
[INFO] [INFO] -- Detecting C compiler ABI info - done
[INFO] [INFO] CMake Error at /work/target/cmake-3.23.2-linux-x86_64/share/cmake-3.23/Modules/CMakeDetermineCompilerABI.cmake:79 (file):
[INFO] [INFO]   file STRINGS file
[INFO] [INFO]   "/work/target/h3-java-build-android-arm/build/CMakeFiles/3.23.2/CMakeDetermineCompilerABI_C.bin"
[INFO] [INFO]   cannot be read.
[INFO] [INFO] Call Stack (most recent call first):
[INFO] [INFO]   /work/target/cmake-3.23.2-linux-x86_64/share/cmake-3.23/Modules/CMakeTestCCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)
[INFO] [INFO]   CMakeLists.txt:26 (project)
[INFO] [INFO]
[INFO] [INFO]
[INFO] [INFO] -- Check for working C compiler: /usr/arm-linux-androideabi/bin/arm-linux-androideabi-clang - skipped
[INFO] [INFO] -- Detecting C compile features
[INFO] [INFO] -- Detecting C compile features - done
[INFO] [INFO] CMake Warning at CMakeLists.txt:355 (message):
[INFO] [INFO]   clang-format was not detected, so automatic source code reformatting is
[INFO] [INFO]   disabled
[INFO] [INFO]
[INFO] [INFO]
[INFO] [INFO] CMake Warning at CMakeLists.txt:367 (message):
[INFO] [INFO]   clang-tidy was not detected, so source code linting is disabled
[INFO] [INFO]
[INFO] [INFO]
[INFO] [INFO] -- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE)
[INFO] [INFO] -- Configuring incomplete, errors occurred!
[INFO] [INFO] See also "/work/target/h3-java-build-android-arm/build/CMakeFiles/CMakeOutput.log".
[INFO] [INFO] ------------------------------------------------------------------------
[INFO] [INFO] BUILD FAILURE
[INFO] [INFO] ------------------------------------------------------------------------
[INFO] [INFO] Total time:  01:58 min
[INFO] [INFO] Finished at: 2023-01-19T10:04:19-08:00
[INFO] [INFO] ------------------------------------------------------------------------
[INFO] [ERROR] Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.1.1:exec (build-h3-c) on project h3: Result of /bin/sh -c cd /Users/isaac/oss/h3-java && /Users/isaac/oss/h3-java/src/main/c/h3-java/build-h3.sh https://github.com/uber/h3.git v4.1.0 true false 20210624-de7b1b0 execution is: '1'. -> [Help 1]
[INFO] [ERROR]
[INFO] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[INFO] [ERROR] Re-run Maven using the -X switch to enable full debug logging.
[INFO] [ERROR]
[INFO] [ERROR] For more information about the errors and possible solutions, please read the following articles:
[INFO] [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  02:00 min
[INFO] Finished at: 2023-01-19T10:04:19-08:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.5.3:prepare (default-cli) on project h3: Maven execution failed, exit code: '1' -> [Help 1]
[ERROR]

This is blocking the release of v4.1.0.

OperatingSystem Enum , getDirName toLowerCase() causes UnsatisfiedLinkError for Turkish Local

Hi,

I have a problem, when i try to H3Core.newInstance(), it throws an exception like this

"No native resource found at /darwฤฑn-x64/libh3-java.dylib ...." Not darwin but darwฤฑn.

under OperatingSystem Enum getDirName , i saw toLowerCase used with default local, it causes problem on Turkish lang (may be some other languages have this problem too) , can u change it like,

toLowerCase()
-->
toLowerCase(Locale.ENGLISH)

Or do you have any suggestion for bypassing this without completely changing system locale to English ?

Performance of a non-throwing API

Having an API which returns null or something similar instead of throwing may be useful for performance reasons. We should benchmark and see.

H3 Polyfill skipping areas near the boundary

Hi I have noticed, when using polyfill for a polygon, it randomly skips certain areas near the boundary. How can we solve this?

For example. In this image blue dots are polygon side, and red is center. Notice the area in Cayote Point is not part of any polygon. So, polyfill will skip it even if that is part of the boundary.

Seems like if center is not part of boudary, it skips the whole polygon.

Screen Shot 2019-03-20 at 7 26 30 AM

Export to GeoJson

You will need

        <dependency>
            <groupId>org.json</groupId>
            <artifactId>json</artifactId>
		    <version>20160810</version>
        </dependency>

I still getting some strange results like the image in the end where I show the resulting hexagons covers a much bigger area than my fence.


package br.com.cmabreu.hexagon.services;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.annotation.PostConstruct;

import org.json.JSONArray;
import org.json.JSONObject;
import org.springframework.stereotype.Service;

import com.uber.h3core.H3Core;
import com.uber.h3core.util.GeoCoord;

@Service
public class InitService {
	private H3Core h3;
	
	
	@PostConstruct
	public void onInit() {
		
		
		try {
			List<GeoCoord> fence = new ArrayList<GeoCoord>();
            fence.add( new GeoCoord(-19.487, -46.747) );
            fence.add( new GeoCoord(-19.487, -35.585) );
            fence.add( new GeoCoord(-25.275, -35.585) );
            fence.add( new GeoCoord(-25.275, -46.747) );	
			
			h3 = H3Core.newInstance();
			
			List<Long> hexagons = h3.polyfill(fence, null, 3);
			
			System.out.println( getGeoJson( hexagons ) );
			
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		
	}	

	
	private JSONObject getGeometry( List<GeoCoord> coordinates ) {
		JSONObject geometry = new JSONObject();

		JSONArray wrapper = new JSONArray();
		JSONArray coords = new JSONArray();
		for( int x=0; x < coordinates.size(); x++ ) {
			JSONArray coord = new JSONArray();
			coord.put(0, coordinates.get(x).lng );
			coord.put(1, coordinates.get(x).lat );
			wrapper.put( x, coord );
		}
		
		// Close the polygon last = first
		JSONArray coord = new JSONArray();
		coord.put(0, coordinates.get(0).lng );
		coord.put(1, coordinates.get(0).lat );
		wrapper.put( coordinates.size(), coord );
		
		coords.put( wrapper );
		geometry.put("type", "Polygon");
		geometry.put("coordinates", coords);
		return geometry;
	}
	
	private JSONObject getFeature( List<GeoCoord> coordinates ) {
		JSONObject feature = new JSONObject();
		feature.put("type", "Feature");
		feature.put("properties", getProperties() );
		feature.put("geometry", getGeometry( coordinates ) );
		return feature;
	}
	
	private JSONObject getProperties() {
		JSONObject properties = new JSONObject();
		properties.put("prop01", "value01");
		return properties;
	}
	
	private String getGeoJson( List<Long> hexagons ) {
		JSONObject featureCollection = new JSONObject();
		featureCollection.put("type", "FeatureCollection");
		JSONArray features = new JSONArray();
		for( Long cell : hexagons ) {
			features.put( getFeature( h3.h3ToGeoBoundary(cell) ) );
		}
		featureCollection.put("features", features);
		return featureCollection.toString();
	}
	
	
}

result
fence

[Breaking change] Glibc version changed in 3.7.1

Version 3.7.1 was build for glibc 2.29+ and version 3.7.0 (and lower) works with glibc lower than 2.29 (e.g. on Amazon Linux)

Exception in thread "main" java.lang.UnsatisfiedLinkError: /mnt/tmp/libh3-java8981121668568062484.so: /lib64/libm.so.6: version `GLIBC_2.29' not found

polygonToCells fails on a rectangular polygon

Hi
Given this rectangular polygon

POLYGON((11.147991 64.75815699999998,11.443969 64.75815699999998,11.443969 64.845147,11.147991 64.845147,11.147991 64.75815699999998))

the polygonToCells call fails with

com.uber.h3core.exceptions.H3Exception: The operation failed but a more specific error is not available

Test program to reproduce:

    var coords = List.of(
        new LatLng(64.758157,11.147991),
        new LatLng(64.758157,11.443969),
        new LatLng(64.845147,11.443969),
        new LatLng(64.845147,11.147991),
        new LatLng(64.758157,11.147991));

    H3Core.newInstance().polygonToCells(coords, List.of(), 10);

The ''same'' polygon shifted at latitudes of 63 degrees works without issue.

Library version: com.uber:h3:4.1.1
OS: Mac Os Ventura 13.5
Processor: 2.6 GHz 6-Core Intel Core i7
Memory: 32GB

Any potential fix/workaround suggestion?
Thanks a lot

h3 index converted to Geocoordinates: how to export to geojson

Hi,
I had 2 quesions related to using h3ToGeoBoundary:
Question 1:
I am doing some preprocessing in spark using h3, and I want to save my results into a format that can easily be exported. My goal is to load the data in geomesa/geoserver. I notice that using h3ToGeoBoundary I get results that are a list of GeoCoord like this:
[GeoCoord{lat=50.346809, lng=14.153511}, GeoCoord{lat=50.316251, lng=14.138129}, GeoCoord{lat=50.294416, lng=14.173950}, GeoCoord{lat=50.303130, lng=14.225160}, GeoCoord{lat=50.333686, lng=14.240581}, GeoCoord{lat=50.355530, lng=14.204753}]
I assume this is the google coordinate type: https://pub.dev/documentation/google_directions_api/latest/google_directions_api/GeoCoord-class.html.
But is this compatible with geospark/geomesa?

It would be very helpful, if there was an option to save this as let's say geojson like there is for h3-js (https://github.com/uber/h3-js#module_h3.h3ToGeoBoundary where a boolean decides how it is saved).
Is there an example somewhere, if I have let's say 10k h3 indexes how to save it into a format that other geospatial tools (geomesa or geospark ) can read?

Question2:
Also when I want to apply a udf to a full column with h3 indexes, this works:
//works
val h3ToGeoBoundary = udf{ (h3Index: Long) =>
H3.instance.h3ToGeoBoundary(h3Index).toString()
}
but this does not:
//does not work
val h3ToGeoBoundaryGeoJson = udf{ (h3Index: Long) =>
H3.instance.h3ToGeoBoundary(h3Index)
}
//error:java.lang.UnsupportedOperationException: Schema for type java.util.List[com.uber.h3core.util.GeoCoord] is not supported
This means that if I want to create a dataframe with couple 1000 rows, I can only have that in string format, which does not allow me to do transformations on it (like selecting each element of the list, and using those coordinates to turn it myself into geojson).
Any clue how to solve this?

Thanks!
PS: great job-very user friendly and cool library.

RuntimePermission error when trying to load the H3 Java library

Hi guys,

As I read on the general H3 roadmap that some help was welcome to integrate H3 with Elasticsearch, I decided to create an Elasticsearch ingest processor that provides support for creating H3 indexes on the fly given a geo location point.

The new processor is packaged as an Elasticsearch plugin and deployed on Elastic Cloud. The plugin instantiates the library using:

    H3Core h3 = H3Core.newInstance();

However, when I make use of the ingest-h3 processor, I'm getting the following error:

      "error" : {
        "root_cause" : [
          {
            "type" : "access_control_exception",
            "reason" : """access denied ("java.lang.RuntimePermission" "loadLibrary./tmp/elasticsearch-4590080898583617881/libh3-java12293578950618569557.so")"""
          }
        ],
        "type" : "access_control_exception",
        "reason" : """access denied ("java.lang.RuntimePermission" "loadLibrary./tmp/elasticsearch-4590080898583617881/libh3-java12293578950618569557.so")"""
      }

Trying to use H3Core.newSystemInstance() yields a similar error, which makes more sense since the h3-java native library is not installed system-wide:

      "error" : {
        "root_cause" : [
          {
            "type" : "access_control_exception",
            "reason" : """access denied ("java.lang.RuntimePermission" "loadLibrary.h3-java")"""
          }
        ],
        "type" : "access_control_exception",
        "reason" : """access denied ("java.lang.RuntimePermission" "loadLibrary.h3-java")"""
      }

It's also worth noting that in the plugin-security.policy file I have added the following permission:

 permission java.lang.RuntimePermission "loadLibrary.*";

I'm a bit out of solutions and not sure how I can have the H3 native library loaded. If anyone can help shed some light on this, it'd be much appreciated. Thanks!

Compatibility with graalvm native-image

Now that graal 19.3 is out and LTS, I tried to use this library in a graalvm native-image, which leads to errors like this:

Exception in thread "main" java.lang.UnsatisfiedLinkError: com.uber.h3core.NativeMethods.getRes0Indexes([J)V [symbol: Java_com_uber_h3core_NativeMethods_getRes0Indexes or Java_com_uber_h3core_NativeMethods_getRes0Indexes___3J]
        at com.oracle.svm.jni.access.JNINativeLinkage.getOrFindEntryPoint(JNINativeLinkage.java:145)
        at com.oracle.svm.jni.JNIGeneratedMethodSupport.nativeCallAddress(JNIGeneratedMethodSupport.java:57)
        at com.uber.h3core.NativeMethods.getRes0Indexes(NativeMethods.java)
        at com.uber.h3core.H3Core.getRes0Indexes(H3Core.java:1021)

It appears that some guidance to native-image is needed for JNI and that there are partially-automated ways to generate the needed configuration, which become available to downstream users too if the config is included in the library's jar.

It isn't as simple as just using the agent on the build and testing tasks, but I'll look some more and see what it takes to generate an appropriate jni-config.json.

H3-java newInstance() couldn't recover when the temporary dynamic library file is deleted

When newing an H3Core instance, the function copies the dynamic library from resources to a temporary file in order to load the libraries and reuses the original temporary file for newing instances later.

In the event that the temporary file is deleted, creating new instances always crashes with no way to recover.

I suggest we add a file existence check to the existing file path and recreate if needed.

H3Core.nonZeroLongArrayToList takes too much memory

Trying to polyfill big area with resolution 11. I can see that internally algorithm prepared result

h3Api.polyfill(verts, holeSizes, holeVerts, res, results);
but when it tries to copy it to List it gets out of memory on this line:
private static List<Long> nonZeroLongArrayToList(long[] out) {
// Allocate for the case that we need to copy everything from
// the `out` array.
List<Long> ret = new ArrayList<>(out.length);
for (int i = 0; i < out.length; i++) {
long h = out[i];
if (h != 0) {
ret.add(h);
}
}
return ret;

As you can see in the stacktrace, result is ready, but it just tries to copy it to ArrayList:
image

Memory, the arrow shows to the place when nonZeroLongArrayToList started :
image

Scala code:

import scala.collection.JavaConverters._
import java.util.{Collections => JCollections}

import beam.utils.ProfilingUtils
import com.uber.h3core.AreaUnit
import com.uber.h3core.util.GeoCoord

def main(args: Array[String]): Unit = {

  val h3Core = com.uber.h3core.H3Core.newInstance

  val xMin = -106.645646
  val xMax = -93.508292
  val yMin = 25.837377
  val yMax = 36.500704

  val rectangle = java.util.Arrays.asList(
    new GeoCoord(yMin, xMin),
    new GeoCoord(yMax, xMin),
    new GeoCoord(yMax, xMax),
    new GeoCoord(yMin, xMax),
  )

  val holes = java.util.Collections.emptyList[java.util.List[GeoCoord]]()
  val resolution = 11
  val hexes = h3Core.polyfillAddress(rectangle, holes, resolution)
  println(s"Generated ${hexes.size()}")
}

The easiest fix is just to get the total number of non-zero elements and allocate an array with that size and copy elements over. Other solution can be moving all zero elements in the original array to the end of the array and wrap it by ArrayList via Arrays.asList(array).subList(index, IDX_OF_FIRST_ZERO);. I can create PR if this sounds good.

Thanks.

Build fail on ppc64

I'm trying to use the lib on a Debian ppc64 server, but at compile time I'm getting the following errors in tests

mvn install
[INFO] Scanning for projects...
[INFO]
[INFO] ----------------------------< com.uber:h3 >-----------------------------
[INFO] Building h3 4.1.2-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- fmt-maven-plugin:2.16:format (default) @ h3 ---
[info] Processed 42 files (0 reformatted).
[INFO]
[INFO] --- properties-maven-plugin:1.0.0:read-project-properties (default) @ h3 ---
[INFO]
[INFO] --- jacoco-maven-plugin:0.8.7:prepare-agent (jacoco-instrument) @ h3 ---
[INFO] argLine set to -javaagent:/home/bencz/.m2/repository/org/jacoco/org.jacoco.agent/0.8.7/org.jacoco.agent-0.8.7-runtime.jar=destfile=/home/bencz/h3-java/target/jacoco.exec
[INFO]
[INFO] --- maven-resources-plugin:2.5:resources (default-resources) @ h3 ---
[debug] execute contextualize
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ h3 ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- exec-maven-plugin:3.1.0:exec (build-h3-c) @ h3 ---
+ GIT_REMOTE=https://github.com/uber/h3.git
+ GIT_REVISION=v4.1.0
+ USE_DOCKER=true
+ SYSTEM_PRUNE=false
+ DOCKCROSS_TAG=20210624-de7b1b0
+ GITHUB_ARTIFACTS=false
+ GITHUB_ARTIFACTS_RUN=
+ false
+ echo Downloading H3 from https://github.com/uber/h3.git
Downloading H3 from https://github.com/uber/h3.git
+ mkdir -p target
~/h3-java/target ~/h3-java
+ pushd target
+ '[' '!' -d h3 ']'
+ pushd h3
~/h3-java/target/h3 ~/h3-java/target ~/h3-java
+ git fetch origin --tags
+ echo Using revision v4.1.0
+ git checkout v4.1.0
Using revision v4.1.0
HEAD is now at 5c911491 Prepare for release 4.1.0 (#741)
+ popd
~/h3-java/target ~/h3-java
+ mkdir -p h3-java-build
~/h3-java/target/h3-java-build ~/h3-java/target ~/h3-java
+ pushd h3-java-build
+ mkdir -p build
+ pushd build
~/h3-java/target/h3-java-build/build ~/h3-java/target/h3-java-build ~/h3-java/target ~/h3-java
+ cmake -DBUILD_SHARED_LIBS=OFF -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_BUILD_TYPE=Release ../../h3
CMake Warning at CMakeLists.txt:355 (message):
  clang-format was not detected, so automatic source code reformatting is
  disabled


CMake Warning at CMakeLists.txt:367 (message):
  clang-tidy was not detected, so source code linting is disabled


-- Configuring done
-- Generating done
-- Build files have been written to: /home/bencz/h3-java/target/h3-java-build/build
+ cmake --build . --target h3 --config Release
[100%] Built target h3
+ cmake --build . --target binding-functions --config Release
Built target binding-functions
++ pwd
+ H3_BUILD_ROOT=/home/bencz/h3-java/target/h3-java-build/build
+ popd
~/h3-java/target/h3-java-build ~/h3-java/target ~/h3-java
+ cmake -DUSE_NATIVE_JNI=ON -DBUILD_SHARED_LIBS=ON -DH3_BUILD_ROOT=/home/bencz/h3-java/target/h3-java-build/build -DCMAKE_BUILD_TYPE=Release ../../src/main/c/h3-java
USE_NATIVE_JNI
CMake Warning at CMakeLists.txt:91 (message):
  clang-format was not detected, so automatic source code reformatting is
  disabled.


-- Configuring done
-- Generating done
-- Build files have been written to: /home/bencz/h3-java/target/h3-java-build
+ cmake --build . --target h3-java --config Release
[100%] Built target h3-java
+ popd
~/h3-java/target ~/h3-java
+ cp h3-java-build/build/binding-functions .
+ popd
~/h3-java
+ false
+ case "$(uname -sm)" in
++ uname -sm
+ LIBRARY_DIR=
+ mkdir -p src/main/resources/
+ cp target/h3-java-build/lib/libh3-java.so src/main/resources/
++ uname -sm
+ '[' 'Linux ppc64' == 'Darwin x86_64' ']'
+ true
+ command -v docker
+ echo Docker not found, skipping cross compilation.
Docker not found, skipping cross compilation.
+ exit 0
[INFO]
[INFO] --- maven-resources-plugin:2.5:copy-resources (copy-resources) @ h3 ---
[debug] execute contextualize
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 2 resources
[INFO]
[INFO] --- maven-resources-plugin:2.5:testResources (default-testResources) @ h3 ---
[debug] execute contextualize
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /home/bencz/h3-java/src/test/resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ h3 ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ h3 ---
[INFO] Surefire report directory: /home/bencz/h3-java/target/surefire-reports

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running com.uber.h3core.TestVertex
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 1.087 sec <<< FAILURE!
com.uber.h3core.TestVertex  Time elapsed: 1.078 sec  <<< ERROR!
java.lang.UnsatisfiedLinkError: No native resource found at /linux-ppc64/libh3-java.so
        at com.uber.h3core.H3CoreLoader.copyResource(H3CoreLoader.java:72)
        at com.uber.h3core.H3CoreLoader.loadNatives(H3CoreLoader.java:122)
        at com.uber.h3core.H3CoreLoader.loadNatives(H3CoreLoader.java:93)
        at com.uber.h3core.H3Core.newInstance(H3Core.java:71)
        at com.uber.h3core.BaseTestH3Core.setup(BaseTestH3Core.java:29)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
        at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
        at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
        at org.junit.internal.runners.statements.RunBefores.invokeMethod(RunBefores.java:33)
        at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
        at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
        at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252)
        at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
        at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
        at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
        at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
        at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
        at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)

Running com.uber.h3core.TestInspection
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.006 sec <<< FAILURE!
com.uber.h3core.TestInspection  Time elapsed: 0.005 sec  <<< ERROR!
java.lang.UnsatisfiedLinkError: No native resource found at /linux-ppc64/libh3-java.so
        at com.uber.h3core.H3CoreLoader.copyResource(H3CoreLoader.java:72)
        at com.uber.h3core.H3CoreLoader.loadNatives(H3CoreLoader.java:122)
        at com.uber.h3core.H3CoreLoader.loadNatives(H3CoreLoader.java:93)
        at com.uber.h3core.H3Core.newInstance(H3Core.java:71)
        at com.uber.h3core.BaseTestH3Core.setup(BaseTestH3Core.java:29)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
        at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
        at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
        at org.junit.internal.runners.statements.RunBefores.invokeMethod(RunBefores.java:33)
        at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
        at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
        at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252)
        at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
        at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
        at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
        at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
        at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
        at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)

Running com.uber.h3core.TestMiscellaneous
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.005 sec <<< FAILURE!
com.uber.h3core.TestMiscellaneous  Time elapsed: 0.004 sec  <<< ERROR!
java.lang.UnsatisfiedLinkError: No native resource found at /linux-ppc64/libh3-java.so
        at com.uber.h3core.H3CoreLoader.copyResource(H3CoreLoader.java:72)
        at com.uber.h3core.H3CoreLoader.loadNatives(H3CoreLoader.java:122)
        at com.uber.h3core.H3CoreLoader.loadNatives(H3CoreLoader.java:93)
        at com.uber.h3core.H3Core.newInstance(H3Core.java:71)
        at com.uber.h3core.BaseTestH3Core.setup(BaseTestH3Core.java:29)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
        at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
        at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
        at org.junit.internal.runners.statements.RunBefores.invokeMethod(RunBefores.java:33)
        at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
        at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
        at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252)
        at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
        at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
        at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
        at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
        at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
        at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)

Running com.uber.h3core.TestBindingCompleteness
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.428 sec
Running com.uber.h3core.TestDirectedEdges
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.008 sec <<< FAILURE!
com.uber.h3core.TestDirectedEdges  Time elapsed: 0.007 sec  <<< ERROR!
java.lang.UnsatisfiedLinkError: No native resource found at /linux-ppc64/libh3-java.so
        at com.uber.h3core.H3CoreLoader.copyResource(H3CoreLoader.java:72)
        at com.uber.h3core.H3CoreLoader.loadNatives(H3CoreLoader.java:122)
        at com.uber.h3core.H3CoreLoader.loadNatives(H3CoreLoader.java:93)
        at com.uber.h3core.H3Core.newInstance(H3Core.java:71)
        at com.uber.h3core.BaseTestH3Core.setup(BaseTestH3Core.java:29)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
        at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
        at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
        at org.junit.internal.runners.statements.RunBefores.invokeMethod(RunBefores.java:33)
        at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
        at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
        at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252)
        at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
        at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
        at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
        at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
        at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
        at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)

Running com.uber.h3core.util.TestCoordIJ
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.003 sec
Running com.uber.h3core.util.TestLatLng
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.003 sec
Running com.uber.h3core.TestTraversal
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.015 sec <<< FAILURE!
com.uber.h3core.TestTraversal  Time elapsed: 0.014 sec  <<< ERROR!
java.lang.UnsatisfiedLinkError: No native resource found at /linux-ppc64/libh3-java.so
        at com.uber.h3core.H3CoreLoader.copyResource(H3CoreLoader.java:72)
        at com.uber.h3core.H3CoreLoader.loadNatives(H3CoreLoader.java:122)
        at com.uber.h3core.H3CoreLoader.loadNatives(H3CoreLoader.java:93)
        at com.uber.h3core.H3Core.newInstance(H3Core.java:71)
        at com.uber.h3core.BaseTestH3Core.setup(BaseTestH3Core.java:29)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
        at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
        at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
        at org.junit.internal.runners.statements.RunBefores.invokeMethod(RunBefores.java:33)
        at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
        at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
        at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252)
        at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
        at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
        at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
        at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
        at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
        at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)

Running com.uber.h3core.TestH3CoreCrossCompile
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0.017 sec
Running com.uber.h3core.v3.TestInspection
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.03 sec <<< FAILURE!
com.uber.h3core.v3.TestInspection  Time elapsed: 0.029 sec  <<< ERROR!
java.lang.UnsatisfiedLinkError: No native resource found at /linux-ppc64/libh3-java.so
        at com.uber.h3core.H3CoreLoader.copyResource(H3CoreLoader.java:72)
        at com.uber.h3core.H3CoreLoader.loadNatives(H3CoreLoader.java:122)
        at com.uber.h3core.H3CoreLoader.loadNatives(H3CoreLoader.java:93)
        at com.uber.h3core.H3Core.newInstance(H3Core.java:71)
        at com.uber.h3core.H3CoreV3.newInstance(H3CoreV3.java:49)
        at com.uber.h3core.v3.BaseTestH3CoreV3.setup(BaseTestH3CoreV3.java:30)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
        at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
        at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
        at org.junit.internal.runners.statements.RunBefores.invokeMethod(RunBefores.java:33)
        at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
        at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
        at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252)
        at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
        at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
        at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
        at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
        at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
        at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)

Running com.uber.h3core.v3.TestMiscellaneous
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.005 sec <<< FAILURE!
com.uber.h3core.v3.TestMiscellaneous  Time elapsed: 0.003 sec  <<< ERROR!
java.lang.UnsatisfiedLinkError: No native resource found at /linux-ppc64/libh3-java.so
        at com.uber.h3core.H3CoreLoader.copyResource(H3CoreLoader.java:72)
        at com.uber.h3core.H3CoreLoader.loadNatives(H3CoreLoader.java:122)
        at com.uber.h3core.H3CoreLoader.loadNatives(H3CoreLoader.java:93)
        at com.uber.h3core.H3Core.newInstance(H3Core.java:71)
        at com.uber.h3core.H3CoreV3.newInstance(H3CoreV3.java:49)
        at com.uber.h3core.v3.BaseTestH3CoreV3.setup(BaseTestH3CoreV3.java:30)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
        at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
        at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
        at org.junit.internal.runners.statements.RunBefores.invokeMethod(RunBefores.java:33)
        at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
        at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
        at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252)
        at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
        at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
        at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
        at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
        at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
        at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)

Running com.uber.h3core.v3.TestDirectedEdges
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.004 sec <<< FAILURE!
com.uber.h3core.v3.TestDirectedEdges  Time elapsed: 0.002 sec  <<< ERROR!
java.lang.UnsatisfiedLinkError: No native resource found at /linux-ppc64/libh3-java.so
        at com.uber.h3core.H3CoreLoader.copyResource(H3CoreLoader.java:72)
        at com.uber.h3core.H3CoreLoader.loadNatives(H3CoreLoader.java:122)
        at com.uber.h3core.H3CoreLoader.loadNatives(H3CoreLoader.java:93)
        at com.uber.h3core.H3Core.newInstance(H3Core.java:71)
        at com.uber.h3core.H3CoreV3.newInstance(H3CoreV3.java:49)
        at com.uber.h3core.v3.BaseTestH3CoreV3.setup(BaseTestH3CoreV3.java:30)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
        at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
        at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
        at org.junit.internal.runners.statements.RunBefores.invokeMethod(RunBefores.java:33)
        at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
        at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
        at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252)
        at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
        at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
        at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
        at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
        at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
        at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)

Running com.uber.h3core.v3.TestTraversal
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.021 sec <<< FAILURE!
com.uber.h3core.v3.TestTraversal  Time elapsed: 0.019 sec  <<< ERROR!
java.lang.UnsatisfiedLinkError: No native resource found at /linux-ppc64/libh3-java.so
        at com.uber.h3core.H3CoreLoader.copyResource(H3CoreLoader.java:72)
        at com.uber.h3core.H3CoreLoader.loadNatives(H3CoreLoader.java:122)
        at com.uber.h3core.H3CoreLoader.loadNatives(H3CoreLoader.java:93)
        at com.uber.h3core.H3Core.newInstance(H3Core.java:71)
        at com.uber.h3core.H3CoreV3.newInstance(H3CoreV3.java:49)
        at com.uber.h3core.v3.BaseTestH3CoreV3.setup(BaseTestH3CoreV3.java:30)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
        at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
        at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
        at org.junit.internal.runners.statements.RunBefores.invokeMethod(RunBefores.java:33)
        at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
        at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
        at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252)
        at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
        at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
        at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
        at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
        at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
        at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)

Running com.uber.h3core.v3.TestIndexing
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.011 sec <<< FAILURE!
com.uber.h3core.v3.TestIndexing  Time elapsed: 0.01 sec  <<< ERROR!
java.lang.UnsatisfiedLinkError: No native resource found at /linux-ppc64/libh3-java.so
        at com.uber.h3core.H3CoreLoader.copyResource(H3CoreLoader.java:72)
        at com.uber.h3core.H3CoreLoader.loadNatives(H3CoreLoader.java:122)
        at com.uber.h3core.H3CoreLoader.loadNatives(H3CoreLoader.java:93)
        at com.uber.h3core.H3Core.newInstance(H3Core.java:71)
        at com.uber.h3core.H3CoreV3.newInstance(H3CoreV3.java:49)
        at com.uber.h3core.v3.BaseTestH3CoreV3.setup(BaseTestH3CoreV3.java:30)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
        at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
        at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
        at org.junit.internal.runners.statements.RunBefores.invokeMethod(RunBefores.java:33)
        at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
        at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
        at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252)
        at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
        at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
        at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
        at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
        at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
        at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)

Running com.uber.h3core.v3.TestRegion
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.006 sec <<< FAILURE!
com.uber.h3core.v3.TestRegion  Time elapsed: 0.001 sec  <<< ERROR!
java.lang.UnsatisfiedLinkError: No native resource found at /linux-ppc64/libh3-java.so
        at com.uber.h3core.H3CoreLoader.copyResource(H3CoreLoader.java:72)
        at com.uber.h3core.H3CoreLoader.loadNatives(H3CoreLoader.java:122)
        at com.uber.h3core.H3CoreLoader.loadNatives(H3CoreLoader.java:93)
        at com.uber.h3core.H3Core.newInstance(H3Core.java:71)
        at com.uber.h3core.H3CoreV3.newInstance(H3CoreV3.java:49)
        at com.uber.h3core.v3.BaseTestH3CoreV3.setup(BaseTestH3CoreV3.java:30)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
        at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
        at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
        at org.junit.internal.runners.statements.RunBefores.invokeMethod(RunBefores.java:33)
        at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
        at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
        at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252)
        at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
        at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
        at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
        at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
        at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
        at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)

Running com.uber.h3core.v3.TestH3CoreV3SystemInstance
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0.003 sec
Running com.uber.h3core.v3.TestHierarchy
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.004 sec <<< FAILURE!
com.uber.h3core.v3.TestHierarchy  Time elapsed: 0.002 sec  <<< ERROR!
java.lang.UnsatisfiedLinkError: No native resource found at /linux-ppc64/libh3-java.so
        at com.uber.h3core.H3CoreLoader.copyResource(H3CoreLoader.java:72)
        at com.uber.h3core.H3CoreLoader.loadNatives(H3CoreLoader.java:122)
        at com.uber.h3core.H3CoreLoader.loadNatives(H3CoreLoader.java:93)
        at com.uber.h3core.H3Core.newInstance(H3Core.java:71)
        at com.uber.h3core.H3CoreV3.newInstance(H3CoreV3.java:49)
        at com.uber.h3core.v3.BaseTestH3CoreV3.setup(BaseTestH3CoreV3.java:30)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
        at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
        at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
        at org.junit.internal.runners.statements.RunBefores.invokeMethod(RunBefores.java:33)
        at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
        at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
        at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252)
        at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
        at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
        at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
        at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
        at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
        at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)

Running com.uber.h3core.TestH3CoreSystemInstance
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0.003 sec
Running com.uber.h3core.TestIndexing
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.005 sec <<< FAILURE!
com.uber.h3core.TestIndexing  Time elapsed: 0.003 sec  <<< ERROR!
java.lang.UnsatisfiedLinkError: No native resource found at /linux-ppc64/libh3-java.so
        at com.uber.h3core.H3CoreLoader.copyResource(H3CoreLoader.java:72)
        at com.uber.h3core.H3CoreLoader.loadNatives(H3CoreLoader.java:122)
        at com.uber.h3core.H3CoreLoader.loadNatives(H3CoreLoader.java:93)
        at com.uber.h3core.H3Core.newInstance(H3Core.java:71)
        at com.uber.h3core.BaseTestH3Core.setup(BaseTestH3Core.java:29)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
        at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
        at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
        at org.junit.internal.runners.statements.RunBefores.invokeMethod(RunBefores.java:33)
        at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
        at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
        at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252)
        at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
        at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
        at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
        at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
        at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
        at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)

Running com.uber.h3core.TestH3CoreLoader
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.004 sec
Running com.uber.h3core.TestRegion
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.019 sec <<< FAILURE!
com.uber.h3core.TestRegion  Time elapsed: 0.017 sec  <<< ERROR!
java.lang.UnsatisfiedLinkError: No native resource found at /linux-ppc64/libh3-java.so
        at com.uber.h3core.H3CoreLoader.copyResource(H3CoreLoader.java:72)
        at com.uber.h3core.H3CoreLoader.loadNatives(H3CoreLoader.java:122)
        at com.uber.h3core.H3CoreLoader.loadNatives(H3CoreLoader.java:93)
        at com.uber.h3core.H3Core.newInstance(H3Core.java:71)
        at com.uber.h3core.BaseTestH3Core.setup(BaseTestH3Core.java:29)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
        at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
        at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
        at org.junit.internal.runners.statements.RunBefores.invokeMethod(RunBefores.java:33)
        at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
        at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
        at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252)
        at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
        at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
        at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
        at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
        at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
        at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)

Running com.uber.h3core.TestH3CoreFactory
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.003 sec <<< FAILURE!
com.uber.h3core.TestH3CoreFactory  Time elapsed: 0.002 sec  <<< ERROR!
java.lang.UnsatisfiedLinkError: No native resource found at /linux-ppc64/libh3-java.so
        at com.uber.h3core.H3CoreLoader.copyResource(H3CoreLoader.java:72)
        at com.uber.h3core.H3CoreLoader.loadNatives(H3CoreLoader.java:122)
        at com.uber.h3core.H3CoreLoader.loadNatives(H3CoreLoader.java:93)
        at com.uber.h3core.H3Core.newInstance(H3Core.java:71)
        at com.uber.h3core.BaseTestH3Core.setup(BaseTestH3Core.java:29)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
        at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
        at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
        at org.junit.internal.runners.statements.RunBefores.invokeMethod(RunBefores.java:33)
        at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
        at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
        at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252)
        at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
        at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
        at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
        at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
        at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
        at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)

Running com.uber.h3core.TestNativeMethods
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.016 sec <<< FAILURE!
com.uber.h3core.TestNativeMethods  Time elapsed: 0.015 sec  <<< ERROR!
java.lang.UnsatisfiedLinkError: No native resource found at /linux-ppc64/libh3-java.so
        at com.uber.h3core.H3CoreLoader.copyResource(H3CoreLoader.java:72)
        at com.uber.h3core.H3CoreLoader.loadNatives(H3CoreLoader.java:122)
        at com.uber.h3core.H3CoreLoader.loadNatives(H3CoreLoader.java:93)
        at com.uber.h3core.TestNativeMethods.setup(TestNativeMethods.java:36)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
        at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
        at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
        at org.junit.internal.runners.statements.RunBefores.invokeMethod(RunBefores.java:33)
        at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
        at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
        at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252)
        at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
        at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
        at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
        at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
        at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
        at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)

Running com.uber.h3core.TestH3CoreLoaderLocale
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.035 sec
Running com.uber.h3core.exceptions.TestH3Exception
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.008 sec
Running com.uber.h3core.TestHierarchy
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.014 sec <<< FAILURE!
com.uber.h3core.TestHierarchy  Time elapsed: 0.013 sec  <<< ERROR!
java.lang.UnsatisfiedLinkError: No native resource found at /linux-ppc64/libh3-java.so
        at com.uber.h3core.H3CoreLoader.copyResource(H3CoreLoader.java:72)
        at com.uber.h3core.H3CoreLoader.loadNatives(H3CoreLoader.java:122)
        at com.uber.h3core.H3CoreLoader.loadNatives(H3CoreLoader.java:93)
        at com.uber.h3core.H3Core.newInstance(H3Core.java:71)
        at com.uber.h3core.BaseTestH3Core.setup(BaseTestH3Core.java:29)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
        at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
        at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
        at org.junit.internal.runners.statements.RunBefores.invokeMethod(RunBefores.java:33)
        at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
        at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
        at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252)
        at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
        at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
        at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
        at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
        at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
        at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)


Results :

Tests in error:
  com.uber.h3core.TestVertex: No native resource found at /linux-ppc64/libh3-java.so
  com.uber.h3core.TestInspection: No native resource found at /linux-ppc64/libh3-java.so
  com.uber.h3core.TestMiscellaneous: No native resource found at /linux-ppc64/libh3-java.so
  com.uber.h3core.TestDirectedEdges: No native resource found at /linux-ppc64/libh3-java.so
  com.uber.h3core.TestTraversal: No native resource found at /linux-ppc64/libh3-java.so
  com.uber.h3core.v3.TestInspection: No native resource found at /linux-ppc64/libh3-java.so
  com.uber.h3core.v3.TestMiscellaneous: No native resource found at /linux-ppc64/libh3-java.so
  com.uber.h3core.v3.TestDirectedEdges: No native resource found at /linux-ppc64/libh3-java.so
  com.uber.h3core.v3.TestTraversal: No native resource found at /linux-ppc64/libh3-java.so
  com.uber.h3core.v3.TestIndexing: No native resource found at /linux-ppc64/libh3-java.so
  com.uber.h3core.v3.TestRegion: No native resource found at /linux-ppc64/libh3-java.so
  com.uber.h3core.v3.TestHierarchy: No native resource found at /linux-ppc64/libh3-java.so
  com.uber.h3core.TestIndexing: No native resource found at /linux-ppc64/libh3-java.so
  com.uber.h3core.TestRegion: No native resource found at /linux-ppc64/libh3-java.so
  com.uber.h3core.TestH3CoreFactory: No native resource found at /linux-ppc64/libh3-java.so
  com.uber.h3core.TestNativeMethods: No native resource found at /linux-ppc64/libh3-java.so
  com.uber.h3core.TestHierarchy: No native resource found at /linux-ppc64/libh3-java.so

Tests run: 32, Failures: 0, Errors: 17, Skipped: 3

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  51.178 s
[INFO] Finished at: 2023-05-19T10:08:29-03:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.12.4:test (default-test) on project h3: There are test failures.
[ERROR]
[ERROR] Please refer to /home/bencz/h3-java/target/surefire-reports for the individual test results.
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.