Undefined symbol: _JNI_CreateJavaVM & _JNI_GetCreatedJavaVMs during building Xcode project
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 38/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Đình trệ
- Lĩnh vực
- build-system, developer-experience
Hướng nghiên cứu
Bắt đầu với linkerSettings được báo cáo trong Package.swift và các product SwiftJava và CSwiftJavaJNI, sau đó so sánh swift build thành công với bản build Xcode macOS bị lỗi trên arm64. Tái hiện các lỗi biểu tượng chưa được định nghĩa _JNI_CreateJavaVM và _JNI_GetCreatedJavaVMs bằng các chi tiết Java và toolchain được cung cấp. Hoàn tất khi project Xcode liên kết được các biểu tượng JNI mà vẫn giữ lại các kiểu Swift Java được tạo.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Commit hash: d087f65caa3dfb1f0582568ce6e2ee0cf69ed717
Context:
I have built simple Swift package, that contains jar file and uses SwiftJava to get artifacts of Java types that were declared in that .jar file, to use them inside the library. I have provided swift-java.config file for desired types.
I used swift build command for the package. Which resulted in successful building and corresponding Swift's representation of Java types were generated in .build directory of my package. So, from my understanding I have set everything up correctly, otherwise those files wouldn't even be generated.
But, once I added this local package to Xcode macOS project I keep getting error from SwiftJava package, which prevents my project from building:
Undefined symbol: _JNI_CreateJavaVM
Undefined symbol: _JNI_GetCreatedJavaVMs
Undefined symbols for architecture arm64:
"_JNI_CreateJavaVM", referenced from:
SwiftJava.JavaVirtualMachine.(in _6C47C84FF2986D473D4896464216BF8F).init(classpath: [Swift.String], vmOptions: [Swift.String], ignoreUnrecognized: Swift.Bool) throws -> SwiftJava.JavaVirtualMachine in SwiftJava.o
"_JNI_GetCreatedJavaVMs", referenced from:
closure #2 @Sendable (inout SwiftJava.JavaVirtualMachine?) throws -> SwiftJava.JavaVirtualMachine in static SwiftJava.JavaVirtualMachine.shared(classpath: [Swift.String], vmOptions: [Swift.String], ignoreUnrecognized: Swift.Bool, replace: Swift.Bool) throws -> SwiftJava.JavaVirtualMachine in SwiftJava.o
ld: symbol(s) not found for architecture arm64
I have tried to specify path for linker in my Package.swift file, in order to find correct libjvm.dylib file, but that doesn't seem to be related to this, since SwiftJava is complaining.
Package.swift content of my package I'm adding to my project
// swift-tools-version: 6.2
// The swift-tools-version declares the minimum version of Swift required to build this package.
import CompilerPluginSupport
import PackageDescription
import class Foundation.FileManager
import class Foundation.ProcessInfo
func findJavaHome() -> String {
if let home: String = ProcessInfo.processInfo.environment["JAVA_HOME"] {
return home
}
let path = "\(FileManager.default.homeDirectoryForCurrentUser.path()).java_home"
if let home: String = try? String(contentsOfFile: path, encoding: .utf8) {
if let lastChar = home.last, lastChar.isNewline {
return String(home.dropLast())
}
return home
}
fatalError("Please set the JAVA_HOME environment variable to point where Java is installed: \(path)")
}
let java_home = findJavaHome()
let javaIncludePath = "\(java_home)/include"
let javaPlatformIncludePath = "\(javaIncludePath)/darwin"
let homebrewJavaPath = "/opt/homebrew/opt/openjdk/libexec/openjdk.jdk/Contents/Home"
let package = Package(
name: "MyPackage",
platforms: [.macOS(.v15)],
products: [.library(name: "MyPackage", type: .dynamic, targets: ["MyPackage"])],
dependencies: [
.package(url: "https://github.com/swiftlang/swift-java", branch: "main")
],
targets: [
// Targets are the basic building blocks of a package, defining a module or a test suite.
// Targets can depend on other targets in this package and products from dependencies.
.target(
name: "MyPackage",
dependencies: [
.product(name: "SwiftJava", package: "swift-java"),
.product(name: "CSwiftJavaJNI", package: "swift-java"),
.product(name: "SwiftJavaConfigurationShared", package: "swift-java"),
.product(name: "SwiftRuntimeFunctions", package: "swift-java")
],
exclude: ["swift-java.config"],
swiftSettings: [
.unsafeFlags(["-I\(javaIncludePath)", "-I\(javaPlatformIncludePath)"]),
.swiftLanguageMode(.v5)
],
linkerSettings: [
.unsafeFlags([
"-L\(homebrewJavaPath)/lib/server",
"-ljvm"
])
],
plugins: [
.plugin(name: "JExtractSwiftPlugin", package: "swift-java"),
.plugin(name: "SwiftJavaPlugin", package: "swift-java")
]
),
]
)
Probably some relevant info about system:
MacBook Air M1
Operating system: MacOS 26.2
swift-driver version: 1.127.14.1 Apple Swift version 6.2.1 (swiftlang-6.2.1.4.8 clang-1700.4.4.1)
Target: arm64-apple-macosx26.0
/usr/libexec/java_home -V:
Matching Java Virtual Machines (1):
25.0.2 (arm64) "Homebrew" - "OpenJDK 25.0.2" /opt/homebrew/Cellar/openjdk/25.0.2/libexec/openjdk.jdk/Contents/Home
java -version:
openjdk version "25.0.2" 2026-01-20
OpenJDK Runtime Environment Homebrew (build 25.0.2)
OpenJDK 64-Bit Server VM Homebrew (build 25.0.2, mixed mode, sharing)
- Ngôn ngữ chính
- Swift
- Star
- 1.3k
- Fork
- 127
- Merge trung bình
- 2 ngày 14 giờ
- Pull request đã merge (30 ngày)
- 5
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Không có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của swiftlang/swift-java
-
wrap-java: Optional convenience methods can fail to compile when a parameter shadows the method nameĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
swiftlang/swift-java#945 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
android
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
swiftlang/swift-java#663 · 4 bình luận · 1 reaction ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 56/100
swiftlang/swift-java#949 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 35/100
swiftlang/swift-java#948 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 54/100
swiftlang/swift-java#947 ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của swiftlang/swift-java
Issue tương tự
-
[Bug]: Intermittent failure in PathUtilsTests.testNewDirectoryIsExcludedAndExistingChoiceIsKeptĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
apple/container#2474 · 2 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Mac proof: carets blink and the inspector's thread lands in different places from run to runĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
AttilaTheFun/visor#244 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 66/100
abue-ammar/tinycast#1819 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Trace URLSession tracking drops SDK `baggage` values when the request already has a `baggage` headerĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
DataDog/dd-sdk-ios#3408 ·
Maintainer thường phản hồi trong vòng 2 ngày
-
[Bug]: cua-driver skill fails Agent Skills frontmatter validationCó thể đã có người làm @Mearman đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
Maintainer thường phản hồi trong vòng 1 ngày