Tôi có một bộ xử lý chú thích java tạo ra một loạt các tệp java trong quá trình biên dịch. Tôi muốn tạo các lớp được tạo đẹp hơn để sử dụng trong kotlin bằng cách thêm các phương thức mở rộng. Tôi đã được nói trên các diễn đàn kotlin rằng một cái gì đó tôi có thể thử sẽ được viết một tập tin kotlin có chứa các chức năng mở rộng của tôi. Tôi đã thử điều này, tôi đã sử dụng đối tượng Filer
để tạo tệp này xuất nó vào thư mục StandardLocations.SOURCE_OUTPUT. Intellij có thể thấy lớp được tạo của tôi và tôi có thể sử dụng các chức năng mở rộng như dự định, nhưng ứng dụng sẽ không biên dịch vì trình biên dịch không thể tìm thấy tệp kotlin mới. Có cách nào tôi có thể viết một tập tin kotlin mới mà sẽ được chọn bởi trình biên dịch kotlin?Cách tạo tệp kotlin từ bộ xử lý chú thích?
19
A
Trả lời
2
Đối với kapt bạn có thể nhận thư mục nguồn qua.
Map<String, String> options = processingEnv.getOptions();
String generatedPath = options.get("kapt.kotlin.generated");
String path = generatedPath
.replaceAll("(.*)tmp(/kapt/debug/)kotlinGenerated",
"$1generated/source$2");
Đáng tiếc là nó không làm việc cho kapt2 (xem vấn đề KT-14070)
Bạn cũng có thể tạo .kt file qua nhà văn tài nguyên
Writer w = processingEnv.getFiler().createResource(SOURCE_OUTPUT, "package_name", "Sample.kt")
Nhưng bây giờ bạn cần phải gọi trình biên dịch hai lần tác vụ compileDebugKotlin chạy trước khi gọi trình xử lý chú thích javax bằng tác vụ compileDebugJavaWithJavac)
0
Xuất tệp của bạn (với gói thích hợp tên e) vào một thư mục như src/build/generated-src/kotlin/your/package/File.kt
và thêm video này vào build.gradle
của bạn:
sourceSets {
main.java.srcDirs += 'build/generated-src/kotlin'
}
Các vấn đề liên quan
- 1. Tôi làm cách nào để tạo bộ xử lý chú thích xử lý Biến cục bộ?
- 2. Bộ xử lý chú thích - Cách lấy Lớp đang xử lý
- 3. Tích hợp bộ xử lý chú thích với Gradle
- 4. Đầu ra bộ xử lý chú thích trong maven
- 5. Java xử lý 6 chú thích - nhận được một lớp từ chú thích
- 6. Lập trình gọi Bộ xử lý chú thích
- 7. Cách nhận chú thích của thuộc tính Kotlin từ Java?
- 8. Cách xử lý chú thích bằng @Target (ElementType.TYPE_USE)?
- 9. eclipse java chú thích xử lý
- 10. Lombok Yêu cầu xử lý chú thích
- 11. Làm cách nào để biên dịch bộ xử lý chú thích với Ant?
- 12. Khám phá lớp của phương thức chú giải trong Bộ xử lý chú thích cho java
- 13. Cách tạo chú thích là một nhóm chú thích?
- 14. Forward tương thích bộ xử lý chú thích Java 6 và SupportedSourceVersion
- 15. cách khắc phục bộ xử lý chú thích không tìm thấy trong IntelliJ?
- 16. Cách sử dụng chú thích Jackson JsonSubTypes trong Kotlin
- 17. Cách sử dụng chú thích Swagger @ApiResponses trong Kotlin?
- 18. Chú thích Java - Có thư viện trợ giúp nào để đọc/xử lý chú thích không?
- 19. xử lý chú thích bên trong phần thân phương thức
- 20. Làm thế nào để viết một bộ xử lý chú thích Java?
- 21. Xử lý một phần tệp bằng bộ tiền xử lý
- 22. Kiểm tra sự vắng mặt của siêu lớp trong bộ xử lý chú thích
- 23. Android Studio 3.0 Canary 1 chú thích bộ xử lý lỗi
- 24. Đọc và xử lý HOCON ở Kotlin
- 25. Tôi làm cách nào để sử dụng Bộ xử lý chú thích Java tùy chỉnh trong Gradle?
- 26. Phiên bản nguồn được hỗ trợ RELEASE_6 từ bộ xử lý chú thích org.eclipse.persistence.internal.jpa.modelgen.CanonicalModelProcessor nhỏ hơn source1.7
- 27. Làm thế nào tôi có thể kiểm tra toàn bộ cây nguồn bằng một bộ xử lý chú thích?
- 28. Kotlin Chú IntDef
- 29. Tạo trình chú giải chú thích Java
- 30. Tạo chú thích bằng JavaPoet
Làm thế nào chính xác được bạn biên dịch ứng dụng của bạn? – yole
Sử dụng plugin gradot kotlin-android. Xin lỗi, đó là một chi tiết khá quan trọng. –
Bạn có thể đăng một dự án mẫu thể hiện vấn đề này không? – miensol