Tôi có thể sử dụng lớp java trong python không?

Cú pháp của bạn là chính xác, cảm ơn vì định dạng đẹp. là gói của tôi. Xe trên đường đi? . Jep có giao diện ClassEnquirer xác định xem quá trình nhập phải từ Java hay Python. Nếu không được chỉ định, ClassEnquirer mặc định là ClassList lớp bao gồm tất cả các lớp đi kèm với JRE và bất kỳ thứ gì trên đường dẫn lớp. Nếu bạn nghĩ rằng lớp nằm trên đường dẫn lớp, hãy thử đặt một điểm dừng trong ClassList. loadClassPath[]. Bây giờ tôi nghĩ về nó, đó là tìm kiếm các lọ và có thể bạn không có lọ nào trong IDE vào thời điểm này. Hãy thử đặt một điểm dừng trong ClassList. loadPackages[] vì nó đang xem ClassLoader's. tập tin lớp. Bạn cũng có thể đặt một điểm dừng trong ClassList. isJavaPackage[] để xem có gì trong bản đồ của các gói khi nhà nhập khẩu cố gắng chọn nhập từ Java hay Python
pip install JPype1

ví dụ/trăn/java. py

from jpype import startJVM, shutdownJVM, java
#startJVM[getDefaultJVMPath[], "-ea"]
startJVM[convertStrings=False]
java.lang.System.out.println["hello world"]

random = java.util.Random[]
number1 = random.nextInt[10]
number2 = random.nextInt[10]
print[number1, number2]
shutdownJVM[]

Xem hướng dẫn sử dụng jpype

Tôi đã thử Python 3 này. 7. 3 chạy trên Linux

$ java -version
openjdk version "1.8.0_242"
OpenJDK Runtime Environment [build 1.8.0_242-8u242-b08-0ubuntu3~19.10-b08]
OpenJDK 64-Bit Server VM [build 25.242-b08, mixed mode]
$ sudo apt-get install openjdk-8-jdk-headless

$ javac -version
javac 1.8.0_242

ví dụ/trăn/java1/Máy tính. java

public class Calculator {
    public static Integer add[Integer a, Integer b] {
        return a*b;
    }
}
ví dụ/python/java1/org/pkg/MyMath. java
package org.pkg;

public class MyMath {
    public static Integer divide[Integer a, Integer b] {
        return a/b;
    }
}
ví dụ/trăn/java1/calc. py
from jpype import startJVM, shutdownJVM, java, addClassPath, JClass, JInt
startJVM[convertStrings=False]
import jpype.imports
#addClassPath["org/pkg"]
#from org.pkg import MyMath
#import MyMath
#import org.pkg as p
#print[p]
#print[p.__class__]

try:
    pass
    #print[dir[p]]
    #p.MyMath.divide[6, 2]
    #import Calculator
    calc = JClass['Calculator']
    print[calc]
    print[dir[calc]]
    res = calc.add[java.lang.Integer[2], java.lang.Integer[2]]
    print[res]
    #from org.pkg import Calculator
    math = JClass['org.pkg.MyMath']
    res = math.divide[java.lang.Integer[6], java.lang.Integer[2]]
    #res = math.divide[JInt[6], java.lang.Integer[2]]
    print[res]

    #calc = Calculator[]
    #print[calc]
except Exception as err:
    print[f"Exception: {err}"]
javac Calculator.java
javac org/pkg/MyMath.java
python calc.py

Bố cục thư mục [trước khi chạy javac]

________số 8

Một trong những tính năng quan trọng nhất của Jython là khả năng nhập các lớp Java trong chương trình Python. Chúng tôi có thể nhập bất kỳ gói hoặc lớp java nào trong Jython, giống như chúng tôi làm trong chương trình Java. Ví dụ sau đây cho thấy cách java. các gói tiện ích được nhập bằng tập lệnh Python [Jython] để khai báo một đối tượng của lớp Date

from java.util import Date
d = Date[]
print d

Lưu và chạy đoạn mã trên với tên UtilDate. py từ dòng lệnh. Phiên bản của ngày và giờ hiện tại sẽ được hiển thị

from jpype import startJVM, shutdownJVM, java
#startJVM[getDefaultJVMPath[], "-ea"]
startJVM[convertStrings=False]
java.lang.System.out.println["hello world"]

random = java.util.Random[]
number1 = random.nextInt[10]
number2 = random.nextInt[10]
print[number1, number2]
shutdownJVM[]
0

Các gói sau từ thư viện Java thường được nhập vào chương trình Jython hơn chủ yếu vì thư viện Python tiêu chuẩn không có các gói tương đương hoặc không tốt bằng

  • servlet
  • JMS
  • J2EE
  • Javadoc
  • Swing được coi là vượt trội so với các bộ công cụ GUI khác

Bất kỳ gói Java nào cho vấn đề đó đều có thể được nhập trong tập lệnh Jython. Tại đây, chương trình java sau đây được lưu trữ và biên dịch trong một gói có tên là foo

from jpype import startJVM, shutdownJVM, java
#startJVM[getDefaultJVMPath[], "-ea"]
startJVM[convertStrings=False]
java.lang.System.out.println["hello world"]

random = java.util.Random[]
number1 = random.nextInt[10]
number2 = random.nextInt[10]
print[number1, number2]
shutdownJVM[]
1

HelloWorld này. lớp được nhập trong Jython Script sau. Các phương thức trong lớp này có thể được gọi từ tập lệnh Jython importex. py

Py4J cho phép các chương trình Python chạy trong trình thông dịch Python truy cập động các đối tượng Java trong Máy ảo Java. Các phương thức được gọi như thể các đối tượng Java nằm trong trình thông dịch Python và các bộ sưu tập Java có thể được truy cập thông qua các phương thức thu thập tiêu chuẩn của Python. Py4J cũng cho phép các chương trình Java gọi lại các đối tượng Python. Py4J được phân phối theo giấy phép BSD

Đây là một ví dụ ngắn gọn về những gì bạn có thể làm với Py4J. Chương trình Python sau đây tạo một java. sử dụng. Phiên bản ngẫu nhiên từ một JVM và gọi một số phương thức của nó. Nó cũng truy cập một lớp Java tùy chỉnh, AdditionApplication để thêm các số được tạo

from jpype import startJVM, shutdownJVM, java
#startJVM[getDefaultJVMPath[], "-ea"]
startJVM[convertStrings=False]
java.lang.System.out.println["hello world"]

random = java.util.Random[]
number1 = random.nextInt[10]
number2 = random.nextInt[10]
print[number1, number2]
shutdownJVM[]
2

Đây là chương trình Java đang thực thi cùng lúc [không có mã nào được tạo và không cần công cụ nào để chạy các chương trình này]. Phiên bản ứng dụng AdditionApplication là cổng. entry_point trong đoạn mã trước. Lưu ý rằng chương trình Java phải được khởi động trước khi thực thi mã Python ở trên. Nói cách khác, Py4J không khởi động JVM

from jpype import startJVM, shutdownJVM, java
#startJVM[getDefaultJVMPath[], "-ea"]
startJVM[convertStrings=False]
java.lang.System.out.println["hello world"]

random = java.util.Random[]
number1 = random.nextInt[10]
number2 = random.nextInt[10]
print[number1, number2]
shutdownJVM[]
3

Hỗ trợ & Tài nguyên¶
  • Hãy xem hướng dẫn Bắt đầu với Py4J .

  • Duyệt qua Tài liệu Py4J hoặc Câu hỏi thường gặp .

  • Đặt câu hỏi trong danh sách gửi thư

  • Nhìn vào lộ trình

Tin tức¶
  • Ngày 12 tháng 8 năm 2022 - Py4J 0. 10. 9. 7 đã được phát hành. Xem Nhật ký thay đổi để biết thêm chi tiết về các bản sửa lỗi và tính năng mới.

  • Ngày 11 tháng 8 năm 2022 - Py4J 0. 10. 9. 6 đã được phát hành. Xem Nhật ký thay đổi để biết thêm chi tiết về các bản sửa lỗi và tính năng mới.

  • Ngày 18 tháng 3 năm 2022 - Py4J 0. 10. 9. 5 đã được phát hành. Xem Nhật ký thay đổi để biết thêm chi tiết về các bản sửa lỗi và tính năng mới.

  • Ngày 16 tháng 3 năm 2022 - Py4J 0. 10. 9. 4 đã được phát hành. Xem Nhật ký thay đổi để biết thêm chi tiết về các bản sửa lỗi và tính năng mới.

  • Ngày 20 tháng 11 năm 2021 - Py4J 0. 10. 9. 3 đã được phát hành. Xem Nhật ký thay đổi để biết thêm chi tiết về các bản sửa lỗi và tính năng mới.

  • Ngày 27 tháng 2 năm 2021 - Py4J 0. 10. 9. 2 đã được phát hành. Xem Nhật ký thay đổi để biết thêm chi tiết về các bản sửa lỗi và tính năng mới.

  • Ngày 7 tháng 9 năm 2020 - Py4J 0. 10. 9. 1 đã được phát hành. Xem Nhật ký thay đổi để biết thêm chi tiết về các bản sửa lỗi và tính năng mới.

  • Ngày 25 tháng 1 năm 2019 - Py4J 0. 10. 9 đã được phát hành. Xem Nhật ký thay đổi để biết thêm chi tiết về các bản sửa lỗi và tính năng mới.

  • Ngày 21 tháng 10 năm 2018 - Py4J 0. 10. 8 và 0. 10. 8. 1 đã được phát hành. Xem Nhật ký thay đổi để biết thêm chi tiết về các bản sửa lỗi và tính năng mới.

  • Ngày 30 tháng 4 năm 2018 - Py4J 0. 10. 7 đã được phát hành. Xem Nhật ký thay đổi để biết thêm chi tiết về các bản sửa lỗi và tính năng mới.

  • Ngày 5 tháng 7 năm 2017 - Py4J 0. 10. 6 đã được phát hành. Xem Nhật ký thay đổi để biết thêm chi tiết về các bản sửa lỗi và tính năng mới.

  • 28 tháng 5 năm 2017 - Py4J 0. 10. 5 đã được phát hành. Xem Nhật ký thay đổi để biết thêm chi tiết về các bản sửa lỗi và tính năng mới.

  • Ngày 14 tháng 10 năm 2016 - Py4J 0. 10. 4 đã được phát hành. Xem Nhật ký thay đổi để biết thêm chi tiết về các bản sửa lỗi và tính năng mới.

  • ngày 31 tháng 7 năm 2016 - Py4J 0. 10. 3 đã được phát hành. Xem Nhật ký thay đổi để biết thêm chi tiết về các bản sửa lỗi và tính năng mới.

  • Ngày 20 tháng 6 năm 2016 - Py4J 0. 10. 2. 1 đã được phát hành. Xem Nhật ký thay đổi để biết thêm chi tiết về các bản sửa lỗi và tính năng mới.

  • Ngày 19 tháng 6 năm 2016 - Py4J 0. 10. 2 đã được phát hành. Xem Nhật ký thay đổi để biết thêm chi tiết về các bản sửa lỗi và tính năng mới.

  • Ngày 11 tháng 5 năm 2016 - Py4J 0. 10. 1 đã được phát hành. Xem Nhật ký thay đổi để biết thêm chi tiết về các bản sửa lỗi và tính năng mới.

  • Ngày 18 tháng 4 năm 2016 - Py4J 0. 10. 0 đã được phát hành. Xem Nhật ký thay đổi để biết thêm chi tiết về các bản sửa lỗi và tính năng mới.

  • Ngày 12 tháng 3 năm 2016 - Py4J 0. 9. 2 đã được phát hành. Xem Nhật ký thay đổi để biết thêm chi tiết về các bản sửa lỗi và tính năng mới.

  • Ngày 9 tháng 1 năm 2016 - Py4J 0. 9. 1 đã được phát hành. Xem Nhật ký thay đổi để biết thêm chi tiết về các bản sửa lỗi.

  • Ngày 3 tháng 9 năm 2015 - Dịch vụ Chuyên nghiệp hiện khả dụng nếu bạn muốn triển khai một tính năng nhanh chóng hoặc nhận hỗ trợ thương mại cho Py4J

  • ngày 25 tháng 7 năm 2015 - Py4J 0. 9 đã được phát hành. Xem Nhật ký thay đổi để biết thêm chi tiết về các bản sửa lỗi. Py4j đã rời khỏi sourcefoge và hiện được lưu trữ trên py4j. org và nó có một danh sách gửi thư mới.

  • ngày 27 tháng 7 năm 2014 - Py4J 0. 8. 2 đã được phát hành. Xem Nhật ký thay đổi để biết thêm chi tiết về các bản sửa lỗi.

  • 26 tháng 12 năm 2013 - Py4J 0. 8. 1 đã được phát hành. Xem Nhật ký thay đổi để biết thêm chi tiết về các tính năng mới.

  • Ngày 14 tháng 6 năm 2013 - Py4J 0. 8 đã được phát hành. Xem Nhật ký thay đổi để biết thêm chi tiết về các tính năng mới.

  • Ngày 2 tháng 6 năm 2011 - Py4J 0. 7 đã được phát hành. Xem Nhật ký thay đổi để biết thêm chi tiết về các tính năng mới.

  • Ngày 17 tháng 2 năm 2011 - Py4J 0. 6 đã được phát hành. Xem Nhật ký thay đổi để biết thêm chi tiết về các tính năng mới.

  • 30 tháng 10 năm 2010 - Py4J 0. 5 đã được phát hành. Xem Nhật ký thay đổi để biết thêm chi tiết về các tính năng mới.

  • Ngày 19 tháng 9 năm 2010 - Py4J 0. 4 đã được phát hành. Xem Nhật ký thay đổi để biết thêm chi tiết về các tính năng mới.

  • 27 tháng 4 năm 2010 - Py4J 0. 3 đã được phát hành. Xem Nhật ký thay đổi để biết thêm chi tiết về các tính năng mới.

  • ngày 11 tháng 2 năm 2010 - Py4J 0. 2 đã được phát hành. Xem Nhật ký thay đổi để biết thêm chi tiết về tất cả các tính năng mới có trong bản phát hành mới nhất.

  • Ngày 23 tháng 12 năm 2009 - Py4J 0. 1 đã được phát hành. Hân hoan

  • Ngày 11 tháng 12 năm 2009 - Py4J vẫn đang trong giai đoạn lập kế hoạch, nhưng mã hiện đang hoạt động cho các tình huống cơ bản. Một bản phát hành và một hướng dẫn sẽ có sẵn trong những tuần tiếp theo

Chủ Đề