xjc(1) Java Web Services Tools xjc(1)

xjc - کامپایل یک فایل شمای XML به کلاس‌های جاوای دارای حاشیه‌نویسی کامل.

xjc [ options ] schema file/URL/dir/jar ... [-b bindinfo ] ...
گزینه‌های خط فرمان. بخش گزینه‌ها را ببینید.
مکان فایل شمای XML. اگر dir مشخص شده باشد، تمام فایل‌های شمای درون آن کامپایل می‌شوند. اگر jar مشخص شود، فایل اتصال /META-INF/sun-jaxb.episode کامپایل می‌شود.

مکان فایل‌های اتصال (bindings).

کامپایلر اتصال را با اسکریپت شل مناسب xjc در دایرکتوری bin پلتفرم خود اجرا کنید. همچنین یک تسک Ant برای اجرای کامپایلر اتصال وجود دارد. به Using the XJC with Ant در http://jaxb.java.net/nonav/2.1.3/docs/xjcTask.html مراجعه کنید.

•
همچنین بخش گزینه‌های غیراستاندارد را ببینید
•
همچنین بخش گزینه‌های منسوخ و حذف‌شده را ببینید

به‌طور پیش‌فرض، کامپایلر اتصال XJC اعتبارسنجی دقیقی را روی شمای مبدأ پیش از پردازش آن انجام می‌دهد. از این گزینه برای غیرفعال کردن اعتبارسنجی دقیق شما استفاده کنید. این بدان معنا نیست که کامپایلر اتصال هیچ اعتبارسنجی انجام نمی‌دهد، بلکه اعتبارسنجی با سخت‌گیری کمتری انجام خواهد شد.

به‌طور پیش‌فرض، کامپایلر اتصال XJC قوانین ذکر شده در فصل سازگاری مشخصات JAXB را به‌دقت اعمال می‌کند. پیوست E.2 مجموعه‌ای از قابلیت‌های W3C XML Schema را مشخص می‌کند که کاملاً توسط JAXB v1.0 پشتیبانی نمی‌شوند. در برخی موارد، با فعال کردن حالت -extension مجاز به استفاده از آن‌ها خواهید بود. در حالت پیش‌فرض (دقیق)، شما همچنین فقط محدود به استفاده از سفارشی‌سازی‌های اتصال تعریف‌شده در مشخصات هستید. با استفاده از سوییچ -extension، مجاز به استفاده از افزونه‌های ارائه‌دهندهٔ JAXB (Vendor Extensions) خواهید بود.

یک یا چند فایل اتصال خارجی را برای پردازش مشخص می‌کند. هر فایل اتصال باید سوییچ -b اختصاصی خود را داشته باشد. نحو فایل‌های اتصال خارجی انعطاف‌پذیر است. می‌توانید یک فایل اتصال واحد داشته باشید که شامل سفارشی‌سازی برای چندین شما باشد، یا می‌توانید سفارشی‌سازی را به چندین فایل اتصال تقسیم کنید: xjc schema1.xsd schema2.xsd schema3.xsd -b bindings123.xjbxjc schema1.xsd schema2.xsd schema3.xsd -b bindings1.xjb -b bindings2.xjb -b bindings3.xjb. علاوه بر این، ترتیب قرارگیری فایل‌های شما و فایل‌های اتصال در خط فرمان تفاوتی ایجاد نمی‌کند.

به‌طور پیش‌فرض، کامپایلر اتصال XJC کلاس‌های محتوای جاوا را در دایرکتوری جاری تولید می‌کند. از این گزینه برای مشخص کردن یک دایرکتوری خروجی جایگزین استفاده کنید. دایرکتوری خروجی باید از قبل وجود داشته باشد؛ کامپایلر اتصال XJC آن را برای شما ایجاد نمی‌کند.

هنگامی که با این گزینهٔ خط فرمان یک بستهٔ مقصد را مشخص می‌کنید، هرگونه سفارشی‌سازی اتصال برای نام بسته و الگوریتم پیش‌فرض نام بسته که در مشخصات تعریف شده است را نادیده می‌گیرد.

پروکسی HTTP یا HTTPS را در قالب [user[:password]@]proxyHost[:proxyPort] مشخص می‌کند. گزینه‌های قدیمی -host و -port همچنان برای سازگاری عقبروی توسط RI پشتیبانی می‌شوند، اما منسوخ شده‌اند. گذرواژه‌ای که با این گزینه مشخص می‌شود، آرگومانی است که برای سایر کاربران با استفاده از دستور top قابل مشاهده است. برای امنیت بیشتر، از گزینهٔ -httpproxyfile استفاده کنید.

پروکسی HTTP یا HTTPS را با استفاده از یک فایل مشخص می‌کند. قالب آن مشابه گزینهٔ -httpproxy است، اما گذرواژهٔ مشخص‌شده در فایل برای کاربران دیگر قابل مشاهده نیست.

محل فایل‌های کلاس برنامه کاربردی کلاینت را که توسط سفارشی‌سازی jxb:javaType و xjc:superClass استفاده می‌شوند مشخص می‌کند.

فایل‌های کاتالوگ را برای تفکیک ارجاعات موجودیت‌های خارجی مشخص می‌کند. از قالب‌های TR9401، XCatalog و OASIS XML Catalog پشتیبانی می‌کند. به XML Entity and URI Resolvers در http://xerces.apache.org/xml-commons/components/resolver/resolver-article.html مراجعه کنید.

به‌طور پیش‌فرض، کامپایلر اتصال XJC فایل‌های منبع جاوایی را که تولید می‌کند در برابر نوشتن محافظت نمی‌کند. با استفاده از این گزینه، کامپایلر اتصال XJC را مجبور کنید منابع جاوای تولیدشده را به‌عنوان فقط‌خواندنی علامت‌گذاری کند.

از تولید حاشیه‌نویسی‌های سطح بسته در **/package-info.java جلوگیری می‌کند. استفاده از این سوییچ باعث می‌شود کد تولیدشده این حاشیه‌نویسی‌ها را درون سایر کلاس‌های تولیدشده داخلی‌سازی کند.

از تولید یادداشت سرآیند فایل که شامل یادداشت و برچسب زمانی است جلوگیری می‌کند. استفاده از این گزینه، کد تولیدشده را با دستور diff سازگارتر می‌کند.

از تولید کدی که به هر یک از ویژگی‌های JAXB 2.1 وابسته باشد جلوگیری می‌کند. این به کد تولیدشده اجازه می‌دهد در محیط زمان اجرای JAXB 2.0 (مانند Java SE 6) اجرا شود.

با شماهای ورودی به‌عنوان W3C XML Schema رفتار می‌کند (پیش‌فرض). اگر این سوییچ را مشخص نکنید، با شماهای ورودی طوری رفتار می‌شود که گویی W3C XML Schema هستند.

با شماهای ورودی به‌عنوان RELAX NG رفتار می‌کند (آزمایشی و پشتیبانی‌نشده). پشتیبانی از شماهای RELAX NG به‌عنوان یک افزونهٔ ارائه‌دهندهٔ JAXB فراهم شده است.

با شماهای ورودی به‌عنوان نحو فشرده RELAX NG رفتار می‌کند (آزمایشی و پشتیبانی‌نشده). پشتیبانی از شماهای RELAX NG به‌عنوان یک افزونهٔ ارائه‌دهندهٔ JAXB فراهم شده است.

با شماهای ورودی به‌عنوان XML DTD رفتار می‌کند (آزمایشی و پشتیبانی‌نشده). پشتیبانی از شماهای RELAX NG به‌عنوان یک افزونهٔ ارائه‌دهندهٔ JAXB فراهم شده است.

ورودی را به‌عنوان WSDL در نظر می‌گیرد و شماهای درون آن را کامپایل می‌کند (آزمایشی و پشتیبانی‌نشده).

خروجی کامپایلر، مانند اطلاعات پیشرفت و هشدارها را سرکوب می‌کند.

تولید خروجی پرحرف، مانند چاپ پیام‌های اطلاعاتی یا نمایش ردپای پشته هنگام بروز برخی خطاها.

خلاصه‌ای کوتاه از سوییچ‌های کامپایلر را نمایش می‌دهد.

اطلاعات نسخهٔ کامپایلر را نمایش می‌دهد.
یک یا چند فایل شما را برای کامپایل مشخص می‌کند. اگر یک دایرکتوری را مشخص کنید، دستور xjc آن را برای یافتن تمام فایل‌های شما جستجو کرده و آن‌ها را کامپایل می‌کند.


باعث می‌شود کد تولیدشده اطلاعات SAX Locator مربوط به XML مبدأ را در نمونه‌های Java bean پس از unmarshalling ارائه دهد.

باعث می‌شود تمام امضاهای متدهای تولیدشده شامل کلیدواژهٔ synchronized باشند.

کد تولیدشده را با حاشیه‌نویسی @javax.annotation.Generated علامت‌گذاری می‌کند.

فایل episode مشخص‌شده را برای کامپایل جداگانه تولید می‌کند.


این گزینه‌ها با گزینهٔ -httpproxy جایگزین شده‌اند. برای سازگاری عقبروی، این گزینه‌ها پشتیبانی می‌شوند، اما مستند نخواهند شد و ممکن است در نسخه‌های آینده حذف شوند.

از آنجا که مشخصات JAXB 2.0 یک محیط زمان اجرای قابل‌حمل را تعریف کرده است، دیگر نیازی نیست JAXB RI بسته‌های **/impl/runtime را تولید کند. بنابراین، این سوییچ منسوخ شده و حذف شد.

سوییچ سازگاری -source در اولین انتشار دسترسی زودهنگام JAXB 2.0 معرفی شد. این سوییچ در نسخه‌های بعدی JAXB 2.0 حذف شده است. اگر نیاز به تولید کد نسخهٔ 1.0.x دارید، از نصب پایه‌کد 1.0.x استفاده کنید.

به‌طور کلی، امن‌ترین روش این است که تمام شماهای مرتبط را به‌صورت یک واحد یکپارچه با سوییچ‌های یکسان کامپایلر اتصال کامپایل کنید. هنگام اجرای دستور xjc فهرست محدودیت‌های زیر را در نظر داشته باشید. اکثر این موارد فقط زمانی رخ می‌دهند که چند شما را با چندین بار فراخوانی دستور xjc کامپایل کنید.

برای کامپایل هم‌زمان چند شما، قوانین اولویت زیر را برای نام بستهٔ جاوای مقصد در نظر داشته باشید:

1.
گزینهٔ -p بالاترین اولویت را دارد.
2.
سفارشی‌سازی jaxb:package.
3.
اگر targetNamespace تعریف شده باشد، الگوریتم تبدیل targetNamespace به نام بستهٔ جاوا که در مشخصات تعریف شده اعمال می‌شود.
4.
اگر هیچ targetNamespace ای تعریف نشده باشد، از نام بستهٔ ثابت generated استفاده می‌شود.

شما نمی‌توانید بیش از یک jaxb:schemaBindings در هر فضای نام داشته باشید، بنابراین امکان ندارد دو شما در یک فضای نام مقصد، در بسته‌های جاوای متفاوت کامپایل شوند.

تمام شماهایی که در یک بستهٔ جاوای مشابه کامپایل می‌شوند باید به‌طور هم‌زمان به کامپایلر اتصال XJC تحویل داده شوند. آن‌ها نمی‌توانند به‌طور مستقل کامپایل شوند و طبق انتظار کار کنند.

گروه‌های جایگزینی عنصر (Element substitution groups) که در چندین فایل شما پراکنده شده‌اند باید هم‌زمان کامپایل شوند.

•
Binding Compiler (xjc) در http://jaxb.java.net/nonav/2.2.3u1/docs/xjc.html
•
Java Architecture for XML Binding (JAXB) در http://www.oracle.com/technetwork/articles/javase/index-140168.html
21 November 2013 JDK 8