我没有用Java编程太多,我曾经不得不为学校编写一些应用程序,运行它不是问题,现在我想开发它并寻找一些其他项目,(MyLocalTon是更准确地说)我看到它使用 Java 11,从我读到的 Maven 是来自 Java 17,我不知道如何运行这样的项目,从哪里获取有关如何运行它的信息,从哪里可以学习这些东西。我有一个指向 Maven 的 pom.xml 文件,但是在安装过程中,当我有 Java 11 时,它会抛出很多错误,然后我将其更改为 17,似乎发生了一些事情,但我仍然有错误。我已经下载了 sdkman,所以我不必过多地弄乱版本。我有一个问题:有人知道我在哪里可以找到问题的答案吗?这是我感兴趣的项目的链接:https://github.com/neodix42/MyLocalTon
我试过了
mvn安装 mvn clean javafx:运行
在 java 11、java 17 和 java 22 上
但并不适合所有人
我想指出我正在使用Linux,如果这有什么区别的话
[ERROR] bad class file: /.../openjfx/javafx-graphics/21/javafx-graphics-21-win.jar(/javafx/scene/Parent.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath.
这不是春天
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.ton</groupId>
<artifactId>MyLocalTon</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>11</java.version>
<ton_branch>master</ton_branch>
<maven.compiler.release>11</maven.compiler.release>
<maven.compiler.version>3.8.1</maven.compiler.version>
<maven.clean.plugin.version>3.1.0</maven.clean.plugin.version>
<maven.assembly.plugin.version>3.6.0</maven.assembly.plugin.version>
<javafx.maven.plugin.version>0.0.8</javafx.maven.plugin.version>
<apache.commons.lang3.version>3.9</apache.commons.lang3.version>
<openjfx.version>21</openjfx.version>
<jfoenix.version>9.0.4</jfoenix.version>
<commons-io.version>2.7</commons-io.version>
<commons-codec.version>1.14</commons-codec.version>
<lombok.version>1.18.30</lombok.version>
<jupiter.version>5.7.1</jupiter.version>
<junit.version>4.13.2</junit.version>
<assertj.version>3.19.0</assertj.version>
<concurrent-junit.version>1.0.2</concurrent-junit.version>
<gson.version>2.8.6</gson.version>
<logback.version>1.4.12</logback.version>
<zip4j.version>2.11.3</zip4j.version>
<jetty.version>11.0.14</jetty.version>
<jprocesses.version>1.6.5</jprocesses.version>
<richtextfx.version>0.10.7</richtextfx.version>
<ton4j.version>0.1.4</ton4j.version>
<objectdb.version>2.8.6</objectdb.version>
<javax.persistence.version>2.1.0</javax.persistence.version>
<jta.version>1.1</jta.version>
<log4j.version>2.17.1</log4j.version>
<linux.amd64.ton.binaries.uri>
https://cicd.neodix.io/view/pipelines/job/${ton_branch}-pipeline/lastSuccessfulBuild/artifact/artifacts/ton-x86-64-linux-portable.zip
</linux.amd64.ton.binaries.uri>
<mac.amd64.ton.binaries.uri>
https://cicd.neodix.io/view/pipelines/job/${ton_branch}-pipeline/lastSuccessfulBuild/artifact/artifacts/ton-x86-64-macos-portable.zip
</mac.amd64.ton.binaries.uri>
<win.amd64.ton.binaries.uri>
https://cicd.neodix.io/view/pipelines/job/${ton_branch}-pipeline/lastSuccessfulBuild/artifact/artifacts/ton-x86-64-windows.zip
</win.amd64.ton.binaries.uri>
</properties>
<repositories>
<repository>
<id>objectdb</id>
<name>ObjectDB Repository</name>
<url>https://m2.objectdb.com</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.googlecode.lanterna</groupId>
<artifactId>lanterna</artifactId>
<version>3.1.2</version>
</dependency>
<dependency>
<groupId>io.github.neodix42</groupId>
<artifactId>smartcontract</artifactId>
<version>${ton4j.version}</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>${openjfx.version}</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-fxml</artifactId>
<version>${openjfx.version}</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-swing</artifactId>
<version>${openjfx.version}</version>
</dependency>
<dependency>
<groupId>org.fxmisc.richtext</groupId>
<artifactId>richtextfx</artifactId>
<version>${richtextfx.version}</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-web</artifactId>
<version>${openjfx.version}</version>
<classifier>win</classifier>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-web</artifactId>
<version>${openjfx.version}</version>
<classifier>linux</classifier>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-web</artifactId>
<version>${openjfx.version}</version>
<classifier>mac</classifier>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-web</artifactId>
<version>${openjfx.version}</version>
<classifier>mac-aarch64</classifier>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-graphics</artifactId>
<version>${openjfx.version}</version>
<classifier>win</classifier>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-graphics</artifactId>
<version>${openjfx.version}</version>
<classifier>linux</classifier>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-graphics</artifactId>
<version>${openjfx.version}</version>
<classifier>mac</classifier>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-graphics</artifactId>
<version>${openjfx.version}</version>
<classifier>mac-aarch64</classifier>
</dependency>
<dependency>
<groupId>com.jfoenix</groupId>
<artifactId>jfoenix</artifactId>
<version>${jfoenix.version}</version>
</dependency>
<dependency>
<groupId>com.fifesoft</groupId>
<artifactId>rsyntaxtextarea</artifactId>
<version>3.1.3</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>${commons-io.version}</version>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>${commons-codec.version}</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>${apache.commons.lang3.version}</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>${jupiter.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<version>${assertj.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${logback.version}</version>
</dependency>
<dependency>
<groupId>com.vmlens</groupId>
<artifactId>concurrent-junit</artifactId>
<version>${concurrent-junit.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>net.lingala.zip4j</groupId>
<artifactId>zip4j</artifactId>
<version>${zip4j.version}</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
<version>${jetty.version}</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-servlet</artifactId>
<version>${jetty.version}</version>
</dependency>
<!-- database -->
<dependency>
<groupId>com.objectdb</groupId>
<artifactId>objectdb</artifactId>
<version>${objectdb.version}</version>
</dependency>
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>javax.persistence</artifactId>
<version>${javax.persistence.version}</version>
</dependency>
<dependency>
<groupId>javax.transaction</groupId>
<artifactId>jta</artifactId>
<version>${jta.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven.compiler.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-clean-plugin</artifactId>
<version>${maven.clean.plugin.version}</version>
<type>maven-plugin</type>
</dependency>
<dependency>
<groupId>org.jprocesses</groupId>
<artifactId>jProcesses</artifactId>
<version>${jprocesses.version}</version>
</dependency>
</dependencies>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven.compiler.version}</version>
<configuration>
<release>${maven.compiler.release}</release>
<source>11</source>
<target>11</target>
</configuration>
</plugin>
<plugin>
<groupId>org.openjfx</groupId>
<artifactId>javafx-maven-plugin</artifactId>
<version>${javafx.maven.plugin.version}</version>
<configuration>
<options>
<option>--add-opens</option>
<option>javafx.graphics/javafx.css=ALL-UNNAMED</option>
<option>--add-opens</option>
<option>javafx.base/com.sun.javafx.runtime=ALL-UNNAMED</option>
<option>--add-opens</option>
<option>javafx.controls/com.sun.javafx.scene.control.behavior=ALL-UNNAMED</option>
<option>--add-opens</option>
<option>javafx.controls/com.sun.javafx.scene.control=ALL-UNNAMED</option>
<option>--add-opens</option>
<option>javafx.base/com.sun.javafx.binding=ALL-UNNAMED</option>
<option>--add-opens</option>
<option>javafx.base/com.sun.javafx.event=ALL-UNNAMED</option>
<option>--add-opens</option>
<option>javafx.graphics/com.sun.javafx.stage=ALL-UNNAMED</option>
<option>--add-opens</option>
<option>javafx.graphics/com.sun.javafx.scene=ALL-UNNAMED</option>
<option>--add-exports</option>
<option>javafx.controls/com.sun.javafx.scene.control.behavior=com.jfoenix</option>
<option>--add-exports</option>
<option>javafx.controls/com.sun.javafx.scene.control=com.jfoenix</option>
<option>--add-exports</option>
<option>javafx.base/com.sun.javafx.binding=com.jfoenix</option>
<option>--add-exports</option>
<option>javafx.graphics/com.sun.javafx.stage=com.jfoenix</option>
<option>--add-exports</option>
<option>javafx.base/com.sun.javafx.scene=com.jfoenix</option>
</options>
<mainClass>org.ton.main.App</mainClass>
</configuration>
<executions>
<execution>
<!-- Default configuration for running -->
<id>default-cli</id>
<configuration>
<mainClass>org.ton.main.App</mainClass>
</configuration>
</execution>
<execution>
<!-- Configuration for debugging, use as >mvn clean javafx:run@debug -->
<id>debug</id>
<configuration>
<options>
<option>-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=*:8000</option>
</options>
<mainClass>org.ton.main.App</mainClass>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-clean-plugin</artifactId>
<version>${maven.clean.plugin.version}</version>
<configuration>
<filesets>
<fileset>
<directory>myLocalTon</directory>
</fileset>
<fileset>
<directory>testDB</directory>
</fileset>
<fileset>
<directory>${basedir}/src/main/resources/</directory>
<includes>
<include>*tonlibjson*</include>
</includes>
</fileset>
<fileset>
<directory>${basedir}/src/main/resources/org/ton/binaries/</directory>
<includes>
<include>*ton-linux*</include>
<include>*ton-mac*</include>
<include>*ton-win*</include>
</includes>
</fileset>
</filesets>
</configuration>
</plugin>
<plugin>
<groupId>com.googlecode.maven-download-plugin</groupId>
<artifactId>download-maven-plugin</artifactId>
<version>1.7.1</version>
<executions>
<execution>
<id>ton-linux-x86_64</id>
<phase>generate-resources</phase>
<goals>
<goal>wget</goal>
</goals>
<configuration>
<overwrite>true</overwrite>
<skipCache>false</skipCache>
<uri>
${linux.amd64.ton.binaries.uri}
</uri>
<unpack>true</unpack>
<outputDirectory>${project.build.directory}/binaries-linux-x86_64</outputDirectory>
</configuration>
</execution>
<execution>
<id>ton-mac-x86_64</id>
<phase>generate-resources</phase>
<goals>
<goal>wget</goal>
</goals>
<configuration>
<overwrite>true</overwrite>
<skipCache>false</skipCache>
<uri>${mac.amd64.ton.binaries.uri}</uri>
<unpack>true</unpack>
<outputDirectory>${project.build.directory}/binaries-mac-x86_64</outputDirectory>
</configuration>
</execution>
<execution>
<id>ton-win-x86_64</id>
<phase>generate-resources</phase>
<goals>
<goal>wget</goal>
</goals>
<configuration>
<overwrite>true</overwrite>
<skipCache>false</skipCache>
<uri>${win.amd64.ton.binaries.uri}</uri>
<unpack>true</unpack>
<outputDirectory>${project.build.directory}/binaries-windows-x86_64</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>${maven.clean.plugin.version}</version>
<executions>
<execution>
<id>copy-final-ton-linux-x86_64_to_resources</id>
<phase>process-resources</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<copy todir="${basedir}/src/main/resources/org/ton/binaries">
<fileset
dir="${project.build.directory}" includes="ton-linux-x86_64.zip"/>
</copy>
<copy file="${project.build.directory}/binaries-linux-x86_64/libtonlibjson.so"
tofile="${basedir}/src/main/resources/tonlibjson.so"/>
</target>
</configuration>
</execution>
<execution>
<id>copy-final-ton-mac-x86_64_to_resources</id>
<phase>process-resources</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<copy todir="${basedir}/src/main/resources/org/ton/binaries">
<fileset
dir="${project.build.directory}" includes="ton-mac-x86_64.zip"/>
</copy>
<copy file="${project.build.directory}/binaries-mac-x86_64/libtonlibjson.dylib"
tofile="${basedir}/src/main/resources/libtonlibjson.dylib"/>
</target>
</configuration>
</execution>
<execution>
<id>copy-final-ton-win-x86_64_to_resources</id>
<phase>process-resources</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<copy todir="${basedir}/src/main/resources/org/ton/binaries">
<fileset dir="${project.build.directory}" includes="ton-win-x86_64.zip"/>
</copy>
<copy file="${project.build.directory}/binaries-windows-x86_64/tonlibjson.dll"
tofile="${basedir}/src/main/resources/tonlibjson.dll"/>
</target>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>${maven.assembly.plugin.version}</version>
<executions>
<execution>
<id>create-final-linux-x86_64-binary-package</id>
<phase>generate-resources</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<finalName>ton-linux-x86_64</finalName>
<appendAssemblyId>false</appendAssemblyId>
<descriptors>
<descriptor>src/assembly/linux-x86_64.xml</descriptor>
</descriptors>
</configuration>
</execution>
<execution>
<id>create-final-mac-x86_64-binary-package</id>
<phase>generate-resources</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<finalName>ton-mac-x86_64</finalName>
<appendAssemblyId>false</appendAssemblyId>
<descriptors>
<descriptor>src/assembly/mac-x86_64.xml</descriptor>
</descriptors>
</configuration>
</execution>
<execution>
<id>create-final-win-x86_64-binary-package</id>
<phase>generate-resources</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<finalName>ton-win-x86_64</finalName>
<appendAssemblyId>false</appendAssemblyId>
<descriptors>
<descriptor>src/assembly/win-x86_64.xml</descriptor>
</descriptors>
</configuration>
</execution>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<finalName>MyLocalTon</finalName>
<appendAssemblyId>false</appendAssemblyId>
<archive>
<manifest>
<mainClass>org.ton.main.Main</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
您无法在 Java 11 上运行 JavaFX 22 -> 它不受支持(并且不会按预期工作)。
Gluon 提供了 主要 JavaFX 版本所需的受支持 Java 版本表:
JavaFX 版本 | 所需的最低 Java 版本 |
---|---|
11 - 19 | 11 |
20 - 23 | 17 |