سؤال

أقوم بتشغيل سطر الأوامر (العملية) التالي من برنامج Windows VC++ 6 باستخدام CreateProcess (أو _spawnv()):

  • java -cp c:\dir\updates.jar;c:\dir\main.jar الرئيسي

ولا تتم قراءة تحديثات الفصل الدراسي في Updates.jar (التي تتجاوز بعضها في main.jar) أو العثور عليها.يبدو الأمر كما لو أنه لا يمكن العثور على مكتبة Updates.jar أو قراءتها.

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

إذا قمت بتشغيل JVM من سطر الأوامر، وأبقيته قيد التشغيل، ثم قمت بتشغيل كعب الروتين القابل للتنفيذ (أعلاه)، فكل شيء يعمل بشكل جيد أيضًا.(وهذا يجعل الأمر يبدو وكأن المشكلة تتعلق بحقوق الملف).

أي فكرة سيكون موضع تقدير كبير!

--إدوارد

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

المحلول

حاول استخدام الأداة المساعدة FileMon من Microsoft لمعرفة ما يحدث.قم بتعيين عامل تصفية التضمين على "التحديثات" للتركيز على المشكلة.

http://technet.microsoft.com/en-us/sysinternals/bb896642.aspx

نصائح أخرى

هل جربت هذا على جهاز آخر؟نظام تشغيل آخر؟ما JVM الذي تستخدمه؟هل جربت JVMs مختلفة؟

هل يمكنك تزويدنا بمثال بسيط يوضح المشكلة؟

شكرًا jdigital!

لقد جربت FileMon وأظهر لي الخطأ الذي كنت أفعله.يحتوي الاستدعاء القابل للتنفيذ CreateProcess() على مؤشر ملف غير مغلق إلى Updates.jar من محاولة نسخ تحديث JAR سابقًا.تعليمات برمجية سيئة تعمل في بيئة الإنتاج، ولكن ليس في بيئة الاختبار.

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