وصف موجز
يستخدم هذا الفئة جهاز Javacompiler المضمن مع javax.tools.toolprovider للتجميع ، ويستخدم ملفات IO و NIO لإنشاء المسار المقابل والقراءة والنسخ ، ويستخدم تعبيرات منتظمة لتحويل أسماء الحزم والدلائل. لقد صنعت للتو تكاملًا متحملًا للأخطاء لهذه الأشياء ، وليس له محتوى فني ، لذلك فهو للراحة.
وحدة API
Class DynamicReactor: // فارغ المعلمة بنية الفئة العامة <؟> DynamicCompile (سلسلة SRCPath) ؛ في المقابل
رمز المصدر
استيراد java.io.bufferedreader ؛ استيراد java.io.file ؛ استيراد java.io.filereader java.util.regex.matcher ؛ استيراد java.util.regex.pattern ؛ استيراد javax.tools.javaCompiler ؛ استيراد javax.tools.toolprovider ؛/*** DynamicReactor وحدة تجميع ديناميكية هي المسؤولة عن ملفات المصدر ، ونسخها إلى الحزم المرتبطة ( */فئة عامة DynamicReactor {javacompiler مترجم ؛ pattern packagepattern ؛ static Final String regex = "(؟ <= package // s) Param SRCPATH PATH PATH * RETURN CLASS * <br> إرجاع مثيل الفئة من الفئة المقابلة * <br> إذا كان الفشل يعيد NULL */الفئة العامة <؟> DynamicCompile (String srcpath) {class <؟ {system.out.println ("DynamicRector: load packagename error!") ؛ return null ؛} // call compiler لتجميع الملف المصدر المحدد int res = compiler.run (null ، null ، null ، srcpath) ؛ if (res! المقابلة لاسم الحزمة ، قم بإنشائه إذا لم يكن المسار موجودًا ، والكتابة فوق ما إذا كان ملف الفئة المحدد موجودًا على سلسلة stringst = dchangepackettodic (packname) ؛ ملف dstdir = ملف جديد (packagedst) ؛ if (! dstdir.exists () {dstdir.mkdir () + ".class") ؛ pathto pathto = paths.get (packagedst ، pathfrom.getFilename (). فشل! ") ؛ تقوم الطريقة بتحويل اسم الحزمة القانونية إلى السلسلة الخاصة المقابلة changePackettodic (سلسلة packagename) {string [] dirs = packagename.split ("//.") سلسلة خاصة getPackage (سلسلة srcpath) {string result = null ؛ bufferedReader Br ؛ حاول {br = جديد bufferedReader (جديد fileReader (srcpath)) ؛ string data = br.readline () ؛ packagepattern.matcher (data) ؛ if (m.find ()) {result = m.group () ؛} break ؛} data = br.readline () ؛لخص
ما سبق هو كل محتوى هذه المقالة حول التجميع الديناميكي وتحميل برمجة Java. آمل أن يكون ذلك مفيدًا للجميع. يمكن للأصدقاء المهتمين الاستمرار في الرجوع إلى الموضوعات الأخرى ذات الصلة على هذا الموقع. إذا كانت هناك أي أوجه قصور ، فيرجى ترك رسالة لإشارةها. شكرا لك يا أصدقائك لدعمكم لهذا الموقع!