Problem with TrackCorridor tutorial

This is my first post in this forum. So I want to start by saying what a superb resource Orekit is, and by thanking the developers.
As a new user my learning curve is amplified by not having used Java (nor Python) before. Other similar languages yes, but Java, and the various IDEs, are new to me.
Naturally I’ve been trying some of the tutorials, and modifying them after I got them working. I’ve now reached TrackCorridor. This proved a bit tricky as I had to find the fasterxml.jackson libraries, they not being on my system as far as I know.

However, I now have a problem (I have not modified the tutorial yet):
In line 133 the method getCircular() cannot be resolved.
I can’t understand this as it is defined in org.orekit.tutorials.yaml.TutorialOrbitType.TutorialCircularOrbit
The earlier line with getTle() does not have a problem.

If it’s relevant, I’m using the IntelliJ IDEA IDE

Thanks for any guidance!
Richard

Some more info, if relevant. I’m using JDK 20.

To my surprise (not knowing Java), compilation seems to be successful, despite the unresolved reference. If I execute I find an error in line 98 because the return from …getResource(“/track-corridor.yaml”) is null
OK, I moved the file to the same directory as the source and changed to “track-corridor.yaml”, so we get past that line. But now there is a problem at line 101, ultimately caused by a problem in the ObjectMapper of the fastxml.jackson libraries.

This tutorial is certainly teaching me some hidden corners of Java, but it’s not really succeeding as an Orekit tutorial, so far.

Hi @RichardF,

Maybe it comes from JDK20? I’ve never tried it. You may try with a former version.
If not, could you print the error in the ObjectMapper?

True, the Jackson/Yaml bridge should work smoothly. That’s why I think it may be related to your JDK version but I’m not sure

Thanks for the suggestion. I’m trying to do that but my IDE is not really cooperating. I’ll keep at it :wink:

I eventually had to go back to the start and create a new project, calling up JDK11 instead of 20. It failed with the same (?) problem:

/Library/Java/JavaVirtualMachines/jdk-11.jdk/Contents/Home/bin/java -javaagent:/Applications/IntelliJ IDEA CE.app/Contents/lib/idea_rt.jar=64558:/Applications/IntelliJ IDEA CE.app/Contents/bin -Dfile.encoding=UTF-8 -classpath /Users/francis/track/out/production/track:/Users/francis/track/jackson-core-2.2.3.jar:/Users/francis/track/orekit-11.3.2-javadoc.jar:/Users/francis/track/orekit-11.3.2.jar:/Users/francis/track/jackson-dataformat-yaml-2.15.1.jar:/Users/francis/track/jackson-databind-2.11.1.jar:/Users/francis/track/hipparchus-2.3-bin/hipparchus-clustering-2.3.jar:/Users/francis/track/hipparchus-2.3-bin/hipparchus-fft-2.3.jar:/Users/francis/track/hipparchus-2.3-bin/hipparchus-geometry-2.3.jar:/Users/francis/track/hipparchus-2.3-bin/hipparchus-optim-2.3.jar:/Users/francis/track/hipparchus-2.3-bin/hipparchus-samples-2.3.jar:/Users/francis/track/hipparchus-2.3-bin/hipparchus-core-2.3.jar:/Users/francis/track/hipparchus-2.3-bin/hipparchus-ode-2.3.jar:/Users/francis/track/hipparchus-2.3-bin/hipparchus-fitting-2.3.jar:/Users/francis/track/hipparchus-2.3-bin/hipparchus-filtering-2.3.jar:/Users/francis/track/hipparchus-2.3-bin/hipparchus-stat-2.3.jar:/Users/francis/track/hipparchus-2.3-bin/hipparchus-migration-2.3.jar org.orekit.tutorials.propagation.TrackCorridor
Exception in thread "main" java.lang.NoClassDefFoundError: com/fasterxml/jackson/annotation/JsonView
	at com.fasterxml.jackson.databind.introspect.JacksonAnnotationIntrospector.<clinit>(JacksonAnnotationIntrospector.java:37)
	at com.fasterxml.jackson.databind.ObjectMapper.<clinit>(ObjectMapper.java:348)
	at org.orekit.tutorials.propagation.TrackCorridor.run(TrackCorridor.java:120)
	at org.orekit.tutorials.propagation.TrackCorridor.main(TrackCorridor.java:101)
Caused by: java.lang.ClassNotFoundException: com.fasterxml.jackson.annotation.JsonView
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
	... 4 more

I appreciate this is not an Orekit problem, exactly, but it is causing a problem in the tutorial.

By the way, maybe it would be a good idea to mention the dependency on this fasterxml stuff in the introduction to the tutorials.

cheers,
Richard

True, we could add this. Could you please open an issue on the tutorial forge for this?

Looks like you’re missing the Jackson dependency. Are you using Maven ?
If so, could you try a “mvn clean install” on the tutorials project.

Cheers,
Maxime

Note that this information is available in the Maven site of the Orekit tutorials : Orekit Tutorials – Project Dependencies

Hi Maxime,

I did the man clean install, and indeed it reported a successful build. But, not being so familiar with Java, it doesn’t really help me: I now have a new file in the target folder called orekit-tutorials-11.3.jar, whereas what I want to be able to do is compile and run an individual tutorial.

Anyway, I don’t want to waste any more of your time: this is for me now to understand Java better!

Thanks,
Richard

Hi @RichardF,

No problem. I just don’t get why you have this error. If “Maven install” worked it means that you have successfully downloaded Jackson and that it is in your $HOME/.m2 directory.
So IntelliJ should be able to see it too.
Maybe someone who has knowledge of IntelliJ could help because I don’t know this IDE very well.

Regards,
Maxime

Indeed.

But I just checked and it’s still got the same problem.

Cheers,
Richard

In $HOME\.m2\repository\com\fasterxml\jackson\core\jackson-annotations\2.13.4, can you see jackson-annotations-2.13.4.jar ?

Yes, it’s there!

I’ve googled your error and it seems that it is often due to different versions of Jackson lib being used at the same time.
But I guess you’re not using Jackson anywhere else in your code right?

@Vincent or @bcazabonne, any idea on how to configure IntelliJ to make the tutorials work?

No I’m not. In fact I’d never heard of it until I started with the tutorials.

I’ve checked all the folders in …\jackson. There are several (core, data format, jackson-base, jackson-bom and jackson-parent). Only the core and data format have any .jar files and all of these are 2.13.4
The only folder with no 2.13.4 subfolder is jackson-parent which is 2.13, but this has no .jar file

Same here. I think it’s a configuration issue with your IDE but I can’t reproduce it…

And as I said I don’t know IntelliJ.
I have found these links on the web that could help:

I never tried the Orekit tutorials in Intellij.
However, I have a project using jackson library and it works perfectly with Intellij. I didn’t perform any particular setting for that