سؤال

لدي تصميم نملة يقوم بإنشاء الدلائل واستدعاء javac وجميع الأشياء العادية.المشكلة التي أواجهها هي أنه عندما أحاول إجراء عملية تنظيف (حذف جميع العناصر التي تم إنشاؤها) فإن تقارير مهمة الحذف غير قادرة على حذف بعض الملفات.عندما أحاول حذفها يدويًا، يعمل الأمر بشكل جيد.يبدو أن الملفات غير مفتوحة بأي عملية أخرى ولكن لا يزال النمل غير قادر على حذفها.ماذا يمكنني أن أفعل؟

هل كانت مفيدة؟

المحلول

لقد واجهت هذه المشكلة مرة واحدة.كان ذلك لأن الملف الذي حاولت حذفه كان جزءًا من ملف com.classpath لمهمة أخرى.

نصائح أخرى

هذا يعتمد ...

  • لا تتمتع عملية Ant بالأذونات الكافية لحذف الملفات (عادةً لأنها تم إنشاؤها بواسطة مستخدم مختلف، ربما مستخدم النظام).حاول تشغيل برنامج Ant النصي كمستخدم إداري، باستخدام Run As.
  • نظام Windows سيء حقًا في تنظيف أقفال الملفات عندما تموت العمليات أو يتم قتلها؛وبالتالي، يعتقد Windows أن الملف مقفل بواسطة عملية ماتت (أو قُتلت).لا يوجد شيء يمكنك القيام به في هذه الحالة سوى إعادة التشغيل.
  • احصل على أدوات أفضل لفحص حالة النظام لديك.أوصي بتنزيل سيس إنترنالز الأدوات واستخدامها بدلاً من مكافئات Windows الافتراضية.

لقد ساعدني استخدام مهمة Ant Retry.لقد قمت للتو بتغليفها حول مهمة الحذف.

لا تذكر ما إذا كان يتم تشغيل الإصدار الخاص بك كمستخدم قام بتسجيل الدخول حاليًا.إذا لم يكن الأمر كذلك، فإن حقيقة أن Explorer.exe أو أي عملية أخرى تحتوي على الدليل الموضح يمكن أن تؤدي إلى قفله أيضًا.لكن حذفه في نفس عملية explorer.exe سينجح.حاول أنلوكر من http://ccollomb.free.fr/unlocker/ لمعرفة العمليات التي تم فيها قفل الملفات/الدلائل.

أنا واجهت نفس المشكلة.
لم يكن لدي أي فئة مسار أو برنامج مكافحة فيروسات يعمل على جهازي.
ومع ذلك، فإن إصدار ANT الذي كنت أستخدمه كان 32 بت وكان JDK الذي قمت بتثبيته 64 بت.
لقد قمت بتثبيت JDK 32 بت وتم حل المشكلة.

هل هناك شيء من عملية Ant يبقي الملفات (أو الدليل) مفتوحًا؟قد يتسبب هذا في الموقف حيث يمكنك حذفها بعد تشغيل النمل، ولكن ليس أثناء تشغيله.

تحتوي إصدارات Ant قبل 1.8.0 على خطأ يؤدي إلى حدوث أخطاء عشوائية أثناء عملية الحذف.حاول استخدام Ant 1.8.0 أو الأحدث.

يمكنك رؤية تفاصيل الخطأ هنا https://issues.Apache.org/bugzilla/show_bug.cgi?id=45960

في حالتي، فشلت عملية التنظيف الخاصة بي من Eclipse، ولم أتمكن من إزالة ملفات البناء.أرى هذا من وقت لآخر.عادة ما ينجح عند تكرار المحاولة.هذه المرة لا.حاولت تشغيل تنظيف النمل من سطر الأوامر، وفشلت غير قادر على الحذف"غير قادر على الحذف".يجب أن يكون Eclipse محتفظًا بملف المشكلة، وعندما خرجت من Eclipse، كان خط cmd قادرًا على حذف OK.

لقد واجهت هذه المشكلة كثيرًا مؤخرًا وهي عشوائية.مرة واحدة يعمل، وفي المرة القادمة لا يعمل.أنا أستخدم NetBeans (إذا كان ذلك مهمًا) وأضفت الكثير من المهام الإضافية إلى ملف build.xml.كنت أواجه هذه المشكلة في مهمة ما بعد الجرة.سيحدث ذلك عندما أقوم باستدعاء unjar على الملف، ثم أقوم بحذفه.أظن أن NB يحاول فحص الجرة وهذا يتسبب في قفلها.

ما نجح بالنسبة لي هو إعادة تسمية الجرة على الفور في بداية -post-jar وإضافة امتداد .tmp إليها.ثم أقوم باستدعاء unjar على الملف المؤقت.عندما أنتهي من ذلك، أعيد التسمية مرة أخرى إلى اسم الجرة المطلوب.

أنا أيضًا واجهت نفس المشكلة وحاولت حذف أدلة البناء يدويًا.أخيرًا قمت بحل المشكلة عن طريق إعادة تسمية قطعة أثرية .jar الخاصة بمشروعي إلى اسم مختلف عن اسم المشروع نفسه.على سبيل المثال:كان مشروعي عبارة عن بوابة واستخدم البرنامج النصي الذي أنشأته النملة لإنشاء Portal.jar، حيث لم يكن Eclipse ant قادرًا على حذف Portal.jar هذا.عندما قمت بتغيير ملف build.xml الخاص بي لإنشاء ملف .jar الخاص بي كـportalnew.jar، تمكن Eclipse من حذف Portalnew.jar هذا في المرة القادمة.أتمنى أن يساعدك هذا.

تحتاج إلى حذفه يدويًا في Windows.عملت معي.(عادة ما تكون الملفات المراد حذفها هي الإصدارات الأقدم من jar..على سبيل المثال:إذا كان هناك httpcore.4.2.5.ja5r وhttpcore.4.3.jar، فسيحاول حذف 4.2.5.jar)

لقد واجهت هذه المشكلة لأن الملف الذي كانت النملة تحاول حذفه كان مستخدمًا بواسطة خدمة/عملية أخرى.لقد أوقفت الخدمة، ثم تم تشغيل البرنامج النصي لبناء النمل.

في حالتي، توقفت عن تشغيل عملية Java من إدارة المهام وأعدت تشغيل ملف بناء Ant.كان الملف قادراً على الحذف وكان البناء ناجحاً.

أرى مشاكل مثل هذه الطريقة كثيرًا منذ أن قمت بالتبديل إلى نظام التشغيل Microsoft Windows 10.إعادة تسمية الملف مباشرة قبل إزالته حل المشكلة بالنسبة لي:

<rename src="file.name" dest="file.name.old"/>
<delete file="file.name.old" />

إذا كان لديك بوابة مثبتة
افتح الدليل في git bash Shell (ابحث عن git bash في البداية).
ثم اكتب أمر bash لحذف الملفات مثل

rm -r filename.xyz
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top