ນີ້ແມ່ນຄໍາສັ່ງ ajc ທີ່ສາມາດດໍາເນີນການໄດ້ໃນ OnWorks ຜູ້ໃຫ້ບໍລິການໂຮດຕິ້ງຟຣີໂດຍໃຊ້ຫນຶ່ງໃນຫຼາຍໆບ່ອນເຮັດວຽກອອນໄລນ໌ຂອງພວກເຮົາເຊັ່ນ Ubuntu Online, Fedora Online, Windows online emulator ຫຼື MAC OS online emulator
ໂຄງການ:
NAME
ajc — compiler ແລະ bytecode weaver ສໍາລັບພາສາ AspectJ ແລະ Java
ສະຫຼຸບສັງລວມ
AJC [ທາງເລືອກໃນການ] [ແຟ້ມ ... | @ແຟ້ມ ... | -argfile ແຟ້ມ ... ]
ລາຍລະອຽດ
ໄດ້ AJC command compiles and weaves AspectJ and Java source and .class files, ຜະລິດ
ໄຟລ໌ .class ສອດຄ່ອງກັບ Java VM ໃດໆກໍຕາມ (1.1 ຫຼືໃໝ່ກວ່າ). ມັນປະສົມປະສານການລວບລວມແລະ
bytecode weaving ແລະສະຫນັບສະຫນູນການສ້າງ incremental; ທ່ານຍັງສາມາດ weave bytecode ໃນເວລາແລ່ນ
ການນໍາໃຊ້ "" >.
arguments ຫຼັງຈາກຕົວເລືອກລະບຸໄຟລ໌ແຫຼ່ງທີ່ຈະລວບລວມ. ເພື່ອລະບຸແຫຼ່ງ
ຫ້ອງຮຽນ, ການນໍາໃຊ້ - ທາງເຂົ້າ (ຂ້າງລຸ່ມນີ້). ໄຟລ໌ອາດຈະຖືກສະແດງໂດຍກົງຢູ່ໃນເສັ້ນຄໍາສັ່ງຫຼືໃນ a
ແຟ້ມ. ທ -argfile ເອກະສານ ແລະ @ເອກະສານ ແບບຟອມແມ່ນທຽບເທົ່າ, ແລະຖືກຕີຄວາມຫມາຍ
arguments ທັງຫມົດທີ່ລະບຸໄວ້ໃນໄຟລ໌ທີ່ກໍານົດໄວ້.
ຫມາຍເຫດ: ເຈົ້າຕ້ອງຜ່ານຢ່າງຈະແຈ້ງ AJC ແຫຼ່ງທີ່ຈໍາເປັນທັງຫມົດ. ໃຫ້ແນ່ໃຈວ່າລວມເອົາແຫຼ່ງ
ບໍ່ພຽງແຕ່ສໍາລັບລັກສະນະຫຼື pointcuts ແຕ່ຍັງສໍາລັບປະເພດທີ່ໄດ້ຮັບຜົນກະທົບ. ລະບຸທັງໝົດ
ແຫຼ່ງຂໍ້ມູນແມ່ນມີຄວາມຈໍາເປັນເພາະວ່າ, ບໍ່ເຫມືອນກັບ javac, ajc ບໍ່ໄດ້ຄົ້ນຫາແຫຼ່ງທີ່ມາ
ຫ້ອງຮຽນ. (ສໍາລັບການສົນທະນາກ່ຽວກັບສິ່ງທີ່ປະເພດທີ່ໄດ້ຮັບຜົນກະທົບອາດຈະຕ້ອງການ, ເບິ່ງ ໄດ້ AspectJ
ດໍາເນີນໂຄງການ ຄູ່ມື, ການປະຕິບັດ ເອກະສານຊ້ອນ ../progguide/implementation.html) .
ເພື່ອລະບຸແຫຼ່ງທີ່ມາ, ທ່ານສາມາດລາຍຊື່ໄຟລ໌ແຫຼ່ງເປັນການໂຕ້ຖຽງ ຫຼືໃຊ້ຕົວເລືອກຕ່າງໆ - ແຫຼ່ງຂໍ້ມູນ
or - ທາງເຂົ້າ. ຖ້າມີຫຼາຍແຫຼ່ງສໍາລັບປະເພດໃດກໍ່ຕາມ, ຜົນໄດ້ຮັບແມ່ນບໍ່ໄດ້ກໍານົດຕັ້ງແຕ່ ajc
ບໍ່ມີທາງທີ່ຈະກໍານົດວ່າແຫຼ່ງໃດຖືກຕ້ອງ. (ນີ້ເກີດຂື້ນເລື້ອຍໆເມື່ອຜູ້ໃຊ້
ປະກອບມີບັນຊີລາຍການຈຸດຫມາຍປາຍທາງໃນ inpath ແລະສ້າງໃຫມ່.)
ທາງເລືອກໃນການ
- injars JarList
deprecated: ນັບຕັ້ງແຕ່ 1.2, ໃຊ້ -inpath, ເຊິ່ງໃຊ້ເວລາໄດເລກະທໍລີ.
- ທາງເຂົ້າ ເສັ້ນທາງ
ຍອມຮັບເປັນແຫຼ່ງ bytecode ໄຟລ໌ .class ໃດໆກໍຕາມໃນຜົນໄດ້ຮັບຈະປະກອບມີເຫຼົ່ານີ້
ຊັ້ນຮຽນ, ອາດຈະເປັນການຖັກແສ່ວດ້ວຍລັກສະນະຕ່າງໆ. ເສັ້ນທາງດຽວ
argument ທີ່ມີລາຍຊື່ເສັ້ນທາງໄປຫາໄຟລ໌ zip ຫຼືໄດເລກະທໍລີ, delimited ໂດຍ
ຕົວຂັ້ນເສັ້ນທາງສະເພາະເວທີ.
- ທາງດ້ານ ເສັ້ນທາງ
Weave ລັກສະນະຄູ່ຈາກໄຟລ໌ jar ແລະລາຍການກ່ຽວກັບເສັ້ນທາງເຂົ້າໄປໃນທຸກແຫຼ່ງ.
ລັກສະນະຕ່າງໆຄວນໄດ້ຮັບຜົນອອກມາໂດຍ compiler ລຸ້ນດຽວກັນ. ເມື່ອໃດ
ແລ່ນຫ້ອງຮຽນຜົນໄດ້ຮັບ, run classpath ຄວນມີ aspectpath ທັງຫມົດ
ລາຍການ. ເສັ້ນທາງ, ເຊັ່ນ classpath, ແມ່ນການໂຕ້ຖຽງດຽວທີ່ມີບັນຊີລາຍຊື່ຂອງເສັ້ນທາງ
ໄຟລ໌ jar, delimited ໂດຍ platform- ສະເພາະ classpath delimiter.
-argfile ເອກະສານ
ໄຟລ໌ດັ່ງກ່າວມີລາຍການທີ່ຂັ້ນດ້ວຍແຖວຂອງອາກິວເມັນ. ແຕ່ລະແຖວໃນໄຟລ໌
ຄວນມີໜຶ່ງທາງເລືອກ, ຊື່ໄຟລ໌, ຫຼືສະຕຣິງອາກິວເມັນ (ເຊັ່ນ: classpath ຫຼື
inpath). ອາກິວເມັນທີ່ອ່ານຈາກໄຟລ໌ຖືກໃສ່ເຂົ້າໄປໃນບັນຊີລາຍຊື່ການໂຕ້ຖຽງສໍາລັບ
ຄໍາສັ່ງ. ເສັ້ນທາງທີ່ກ່ຽວຂ້ອງໃນໄຟລ໌ແມ່ນຄິດໄລ່ຈາກໄດເລກະທໍລີ
ມີໄຟລ໌ (ບໍ່ແມ່ນໄດເລກະທໍລີທີ່ເຮັດວຽກໃນປະຈຸບັນ). ຄໍາເຫັນ, ເຊັ່ນດຽວກັບ Java,
ເລີ່ມຕົ້ນດ້ວຍ // ແລະຂະຫຍາຍໄປໃນຕອນທ້າຍຂອງເສັ້ນ. ຕົວເລືອກທີ່ລະບຸໄວ້ໃນການໂຕ້ຖຽງ
ໄຟລ໌ອາດຈະ override ແທນທີ່ຈະຂະຫຍາຍຄ່າທາງເລືອກທີ່ມີຢູ່ແລ້ວ, ສະນັ້ນຫຼີກເວັ້ນ
ການລະບຸທາງເລືອກເຊັ່ນ: - classpath ໃນໄຟລ໌ໂຕ້ຖຽງບໍ່ຄືກັບ
ໄຟລ໌ argument ແມ່ນສະເພາະການກໍ່ສ້າງເທົ່ານັ້ນ. ແບບຟອມ @ໄຟລ໌ ແມ່ນຄືກັນກັບ
ການລະບຸ -argfile ເອກະສານ.
- outjar output.jar
ເອົາຊັ້ນຮຽນອອກໃນໄຟລ໌ zip output.jar.
-outxml ສ້າງໄຟລ໌ aop.xml ສໍາລັບການທໍເວລາໂຫຼດດ້ວຍຊື່ເລີ່ມຕົ້ນ.
-outxmlfile custom/aop.xml
ສ້າງໄຟລ໌ aop.xml ສຳລັບການຖັກແສ່ວເວລາໂຫຼດດ້ວຍຊື່ແບບກຳນົດເອງ.
- ເພີ່ມເຕີມ
ແລ່ນ compiler ຢ່າງຕໍ່ເນື່ອງ. ຫຼັງຈາກການລວບລວມຂໍ້ມູນເບື້ອງຕົ້ນ, compiler ຈະ
ລໍຖ້າການລວບລວມຄືນຈົນກ່ວາມັນອ່ານເສັ້ນໃຫມ່ຈາກການປ້ອນມາດຕະຖານ, ແລະຈະ
ເຊົາເມື່ອມັນອ່ານ 'q'. ມັນພຽງແຕ່ຈະລວບລວມອົງປະກອບທີ່ຈໍາເປັນ, ດັ່ງນັ້ນ a
recompile ຄວນຈະໄວກວ່າການລວບລວມທີສອງ. ນີ້ຮຽກຮ້ອງໃຫ້ມີ
- ແຫຼ່ງຂໍ້ມູນ
- ແຫຼ່ງຂໍ້ມູນ DirPaths
ຊອກຫາ ແລະສ້າງໄຟລ໌ແຫຼ່ງ .java ຫຼື .aj ທັງໝົດພາຍໃຕ້ໄດເຣັກທໍຣີໃດນຶ່ງທີ່ມີລາຍຊື່ຢູ່ໃນ
DirPaths. DirPaths, ເຊັ່ນ classpath, ແມ່ນການໂຕ້ຖຽງດຽວທີ່ມີບັນຊີລາຍຊື່ຂອງ
ເສັ້ນທາງໄປຫາໄດເລກະທໍລີ, delimited by platform- specific classpath delimiter.
ຕ້ອງການໂດຍ -incremental.
- ການອ້າງອີງ
ສ້າງໄຟລ໌ build .ajsym ເຂົ້າໄປໃນໄດເລກະທໍລີຜົນຜະລິດ. ໃຊ້ສໍາລັບການເບິ່ງ
ການອ້າງອິງຂ້າມຜ່ານເຄື່ອງມືເຊັ່ນ AspectJ Browser.
-emacssym ສ້າງໄຟລ໌ສັນຍາລັກ .ajesym ສໍາລັບການສະຫນັບສະຫນູນ emacs (ປະຕິເສດ).
-Xlint ເຊັ່ນດຽວກັນກັບ -Xlint: ຄໍາເຕືອນ (ເປີດນໍາໃຊ້ໂດຍຄ່າເລີ່ມຕົ້ນ)
-Xlint:{level}
ກໍານົດລະດັບເລີ່ມຕົ້ນສໍາລັບຂໍ້ຄວາມກ່ຽວກັບຄວາມຜິດພາດການຂຽນໂປຼແກຼມທີ່ເປັນໄປໄດ້ໃນ
ລະຫັດຕັດຂ້າມ. {level} ອາດຈະຖືກລະເລີຍ, ການເຕືອນ, ຫຼືຄວາມຜິດພາດ. ອັນນີ້ overrides
ລາຍການໃນ org/aspectj/weaver/XlintDefault.properties ຈາກ aspectjtools.jar, ແຕ່
ບໍ່ override ລະດັບທີ່ກໍານົດໄວ້ໂດຍໃຊ້ຕົວເລືອກ -Xlintfile.
-Xlintfile PropertyFile
ລະບຸໄຟລ໌ຄຸນສົມບັດເພື່ອກໍານົດລະດັບສໍາລັບຂໍ້ຄວາມ crosscutting ສະເພາະ.
PropertyFile ແມ່ນເສັ້ນທາງໄປຫາໄຟລ໌ Java .properties ທີ່ໃຊ້ຄຸນສົມບັດດຽວກັນ
ຊື່ ແລະຄ່າເປັນ org/aspectj/weaver/XlintDefault.properties ຈາກ
aspectjtools.jar, ເຊິ່ງມັນຍັງ overrides.
- ຊ່ວຍປ່ອຍຂໍ້ມູນກ່ຽວກັບທາງເລືອກໃນການ compiler ແລະການນໍາໃຊ້
-version Emit ເວີຊັ່ນຂອງ AspectJ compiler
- classpath ເສັ້ນທາງ
ລະບຸບ່ອນທີ່ຈະຊອກຫາໄຟລ໌ລະດັບຜູ້ໃຊ້. ເສັ້ນທາງແມ່ນການໂຕ້ຖຽງດຽວທີ່ມີ a
ບັນຊີລາຍຊື່ຂອງເສັ້ນທາງໄປຫາໄຟລ໌ zip ຫຼືໄດເລກະທໍລີ, delimited ໂດຍເວທີສະເພາະ
ຕົວແບ່ງເສັ້ນທາງ.
-bootclasspath ເສັ້ນທາງ
ລົບລ້າງສະຖານທີ່ຂອງ bootclasspath ຂອງ VM ເພື່ອຈຸດປະສົງຂອງການປະເມີນປະເພດເມື່ອ
ການລວບລວມ. Path ແມ່ນການໂຕ້ຖຽງດຽວທີ່ມີບັນຊີລາຍຊື່ຂອງເສັ້ນທາງໄປຫາໄຟລ໌ zip ຫຼື
ໄດເລກະທໍລີ, delimited by platform-specific path delimiter.
-extdirs ເສັ້ນທາງ
ລົບລ້າງສະຖານທີ່ຂອງໄດເລກະທໍລີສ່ວນຂະຫຍາຍຂອງ VM ເພື່ອຈຸດປະສົງການປະເມີນປະເພດ
ເມື່ອລວບລວມ. ເສັ້ນທາງແມ່ນການໂຕ້ຖຽງດຽວທີ່ມີບັນຊີລາຍຊື່ຂອງເສັ້ນທາງໄປຫາ
ໄດເລກະທໍລີ, delimited by platform-specific path delimiter.
-d Directory
ລະບຸບ່ອນທີ່ຈະວາງໄຟລ໌ .class ທີ່ສ້າງຂຶ້ນ. ຖ້າບໍ່ລະບຸ, Directory
defaults ກັບ dir ທີ່ເຮັດວຽກໃນປະຈຸບັນ.
-ເປົ້າຫມາຍ [1.1 to 1.5]
ລະບຸການຕັ້ງເປົ້າໝາຍ classfile (1.1 ຫາ 1.5, ຄ່າເລີ່ມຕົ້ນແມ່ນ 1.2)
-1.3 ກໍານົດລະດັບການປະຕິບັດຕາມເປັນ 1.3 ນີ້ຫມາຍຄວາມວ່າ -source 1.3 ແລະ -target 1.1.
-1.4 ກໍານົດລະດັບການປະຕິບັດຕາມເປັນ 1.4 (ຄ່າເລີ່ມຕົ້ນ) ນີ້ຫມາຍຄວາມວ່າ -source 1.4 ແລະ -target 1.2.
-1.5 ກໍານົດລະດັບການປະຕິບັດຕາມເປັນ 1.5. ນີ້ຫມາຍເຖິງ -source 1.5 ແລະ -target 1.5.
- ແຫຼ່ງ [1.3|1.4|1.5]
ສະຫຼັບການຢືນຢັນ (1.3, 1.4, ຫຼື 1.5 - ຄ່າເລີ່ມຕົ້ນແມ່ນ 1.4). ເມື່ອໃຊ້ -source 1.3,
ຖະແຫຼງການ assert() ທີ່ຖືກຕ້ອງພາຍໃຕ້ Java 1.4 ຈະສົ່ງຜົນໃຫ້ເກີດຄວາມຜິດພາດ compiler.
ເມື່ອໃຊ້ -source 1.4, ປິ່ນປົວ ຢືນຢັນ ເປັນຄໍາສໍາຄັນແລະປະຕິບັດການຢືນຢັນ
ອີງຕາມ 1.4 spec ພາສາ. ເມື່ອໃຊ້ -source 1.5, Java 5 ພາສາ
ຄຸນນະສົມບັດແມ່ນອະນຸຍາດໃຫ້.
-nowarn ປ່ອຍອອກມາບໍ່ມີຄໍາເຕືອນ (ທຽບເທົ່າກັບ '-warn:none') ນີ້ບໍ່ໄດ້ສະກັດຂໍ້ຄວາມ
ຜະລິດໂດຍ ປະກາດ ການເຕືອນໄພ or Xlint.
- ເຕືອນ: ລາຍການ
ປ່ອຍຄຳເຕືອນສຳລັບທຸກກໍລະນີຂອງລາຍຊື່ລະຫັດທີ່ຂັ້ນດ້ວຍເຄື່ອງໝາຍຈຸດ
(ເຊັ່ນ: '-warn:unusedLocals, deprecation'):
constructorName method ທີ່ມີຊື່ constructor
packageDefaultMethod ພະຍາຍາມ override package-default method
deprecation ການນໍາໃຊ້ປະເພດຂອງ deprecated ຫຼືສະມາຊິກ
maskedCatchBlocks ຕັນຈັບທີ່ເຊື່ອງໄວ້
unusedLocals ຕົວແປທ້ອງຖິ່ນບໍ່ເຄີຍອ່ານ
unusedArguments method argument ບໍ່ເຄີຍອ່ານ
unusedImports ຄໍາຖະແຫຼງການນໍາເຂົ້າບໍ່ໄດ້ໃຊ້ໂດຍລະຫັດໃນໄຟລ໌
none ການສະກັດກັ້ນການເຕືອນ compiler ທັງຫມົດ
- ເຕືອນ: ບໍ່ມີ ບໍ່ສະກັດກັ້ນຂໍ້ຄວາມທີ່ສ້າງຂຶ້ນໂດຍ ປະກາດ ການເຕືອນໄພ or Xlint.
- ການຍົກເລີກ
ຄືກັນກັບ -warn: deprecation
-noImportError
ປ່ອຍອອກມາເມື່ອບໍ່ມີຂໍ້ຜິດພາດສໍາລັບການນໍາເຂົ້າທີ່ບໍ່ໄດ້ຮັບການແກ້ໄຂ
-proceedOnError
ສືບຕໍ່ການລວບລວມຫຼັງຈາກຄວາມຜິດພາດ, dumping ໄຟລ໌ຫ້ອງຮຽນດ້ວຍວິທີການບັນຫາ
-g:[lines,vars,source]
ລະດັບຄຸນສົມບັດດີບັກ, ເຊິ່ງອາດມີສາມຮູບແບບ:
-g ຂໍ້ມູນດີບັກທັງໝົດ ('-g:lines,vars,source')
-g: none ບໍ່ມີຂໍ້ມູນດີບັກ
-g:{items} ຂໍ້ມູນແກ້ໄຂບັນຫາສໍາລັບການໃດໆ / ທັງຫມົດຂອງ [lines, vars, source], ເຊັ່ນ:
-g:lines,ແຫຼ່ງ
- ຮັກສາທັງຫມົດທ້ອງຖິ່ນ
ຮັກສາຕົວແປທ້ອງຖິ່ນທັງໝົດໃນລະຫວ່າງການສ້າງລະຫັດ (ເພື່ອຄວາມສະດວກໃນການດີບັກ).
- ຂໍ້ມູນອ້າງອີງ
ຂໍ້ມູນອ້າງອີງການຄິດໄລ່.
- ການເຂົ້າລະຫັດ ຮູບແບບ
ລະບຸຮູບແບບການເຂົ້າລະຫັດແຫຼ່ງເລີ່ມຕົ້ນ. ລະບຸການເຂົ້າລະຫັດແບບກຳນົດເອງໃນໄຟລ໌ຕໍ່ໄຟລ໌
ພື້ນຖານໂດຍການຕໍ່ທ້າຍແຕ່ລະແຫຼ່ງໄຟລ໌/ຊື່ໂຟນເດີດ້ວຍ '[ການເຂົ້າລະຫັດ]'.
-verbose ປ່ອຍຂໍ້ຄວາມກ່ຽວກັບການເຂົ້າເຖິງ / ການປຸງແຕ່ງຫນ່ວຍງານສັງລວມ
-showWeaveInfo
ປ່ອຍຂໍ້ຄວາມກ່ຽວກັບການທໍຜ້າ
-ບັນທຶກ ເອກະສານ ລະບຸໄຟລ໌ບັນທຶກສໍາລັບຂໍ້ຄວາມ compiler.
-progress ສະແດງຄວາມຄືບໜ້າ (ຕ້ອງການ -log mode).
-time ສະແດງຂໍ້ມູນຄວາມໄວ.
-noExit ຢ່າໂທຫາ System.exit(n) ໃນຕອນທ້າຍຂອງການລວບລວມ (n=0 ຖ້າບໍ່ມີຂໍ້ຜິດພາດ)
- ເຮັດເລື້ມຄືນ N ເຮັດຊ້ໍາຂະບວນການລວບລວມ N ເວລາ (ໂດຍປົກກະຕິເພື່ອເຮັດການວິເຄາະປະສິດທິພາບ).
-XterminateAfterCompilation
ເຮັດໃຫ້ compiler ຢຸດເຊົາກ່ອນທີ່ຈະທໍ
-XaddSerialVersionUID
ເຮັດໃຫ້ compiler ຄິດໄລ່ແລະເພີ່ມພາກສະຫນາມ SerialVersionUID ກັບປະເພດໃດ
ການປະຕິບັດ Serializable ທີ່ໄດ້ຮັບຜົນກະທົບຈາກລັກສະນະໃດຫນຶ່ງ. ພາກສະຫນາມແມ່ນ
ຄິດໄລ່ໂດຍອີງໃສ່ຊັ້ນຮຽນກ່ອນການຖັກແສ່ວໄດ້ເກີດຂຶ້ນ.
- ສາມາດເຮັດເລື່ອຍໄດ້[:ບີບອັດ]
(ການທົດລອງ - ເຊົາສະຫມັກເປັນຄ່າເລີ່ມຕົ້ນໃນປັດຈຸບັນ) ແລ່ນ weaver ໃນຮູບແບບ reweavable ທີ່
ເຮັດໃຫ້ມັນເພື່ອສ້າງຊັ້ນຮຽນການທໍທີ່ສາມາດໄດ້ຮັບການ rewoven, ຂຶ້ນກັບການ
ຂໍ້ຈໍາກັດທີ່ພະຍາຍາມ reweave ທຸກປະເພດທີ່ແນະນໍາການທໍ
ປະເພດຕ້ອງສາມາດເຂົ້າເຖິງໄດ້.
-XnoInline
(ທົດລອງ) ບໍ່ໄດ້ຢູ່ໃນແຖວຄໍາແນະນໍາ
-XincrementalFile ເອກະສານ
(ການທົດລອງ) ນີ້ເຮັດວຽກຄ້າຍຄືຮູບແບບການເພີ່ມ, ແຕ່ການນໍາໃຊ້ໄຟລ໌ແທນທີ່ຈະເປັນ
ການປ້ອນຂໍ້ມູນມາດຕະຖານເພື່ອຄວບຄຸມ compiler. ມັນຈະລວບລວມຄືນໄຟລ໌ແຕ່ລະຄັ້ງ
ມີການປ່ຽນແປງແລະຢຸດເມື່ອໄຟລ໌ຖືກລຶບ.
-XserializableAspects
(ການທົດລອງ) ໂດຍປົກກະຕິມັນເປັນຄວາມຜິດພາດທີ່ຈະປະກາດລັກສະນະ Serializable. ນີ້
ທາງເລືອກເອົາຂໍ້ຈໍາກັດນັ້ນອອກ.
-XnotReweavable
(ການທົດລອງ) ສ້າງໄຟລ໌ຊັ້ນຮຽນທີ່ບໍ່ສາມາດໄດ້ຮັບການຕໍ່ມາໂດຍ AspectJ.
-Xajruntimelevel:1.2, ajruntimelevel:1.5
(ການທົດລອງ) ອະນຸຍາດໃຫ້ລະຫັດທີ່ຈະຖືກສ້າງຕັ້ງເປົ້າຫມາຍເປັນ 1.2 ຫຼື 1.5 ລະດັບ
AspectJ runtime (ຄ່າເລີ່ມຕົ້ນ 1.5)
ເອກະສານ ຊື່
ajc ຍອມຮັບໄຟລ໌ແຫຼ່ງທີ່ມີທັງ .ຈາວາ ການຂະຫຍາຍຫຼື .aj ການຂະຫຍາຍ. ພວກເຮົາ
ປົກກະຕິໃຊ້ .ຈາວາ ສໍາລັບໄຟລ໌ທັງໝົດຂອງພວກເຮົາໃນລະບົບ AspectJ -- ໄຟລ໌ທີ່ປະກອບດ້ວຍລັກສະນະຕ່າງໆ
ເຊັ່ນດຽວກັນກັບໄຟລ໌ທີ່ມີຫ້ອງຮຽນ. ຢ່າງໃດກໍຕາມ, ຖ້າຫາກວ່າທ່ານມີຄວາມຕ້ອງການທີ່ຈະກົນໄກການ
ຈໍາແນກໄຟລ໌ທີ່ໃຊ້ຫນ້າທີ່ເພີ່ມເຕີມຂອງ AspectJ ຈາກທີ່ບໍລິສຸດ
Java ພວກເຮົາແນະນໍາໃຫ້ໃຊ້ .aj ສ່ວນຂະຫຍາຍສໍາລັບໄຟລ໌ເຫຼົ່ານັ້ນ.
ພວກເຮົາຕ້ອງການຂັດຂວາງວິທີການອື່ນຂອງຄວາມແຕກຕ່າງທາງກົນຈັກເຊັ່ນ: ສົນທິສັນຍາການຕັ້ງຊື່
ຫຼືຊຸດຍ່ອຍໃນເງື່ອນໄຂຂອງ .aj ການຂະຫຍາຍ.
· ສົນທິສັນຍາຊື່ໄຟລ໌ແມ່ນຍາກທີ່ຈະບັງຄັບໃຊ້ ແລະນໍາໄປສູ່ການຕັ້ງຊື່ທີ່ງຸ່ມງ່າມສຳລັບລັກສະນະຂອງເຈົ້າ.
ແທນທີ່ TracingAspect.java ພວກເຮົາແນະນໍາໃຫ້ໃຊ້ Tracing.aj (ຫຼືພຽງແຕ່ Tracing.java)
ແທນທີ່ຈະເປັນ.
·ຊຸດຍ່ອຍຍ້າຍລັກສະນະອອກຈາກສະຖານທີ່ທໍາມະຊາດໃນລະບົບແລະສາມາດສ້າງ
ຄວາມຕ້ອງການປອມສໍາລັບລັກສະນະສິດທິພິເສດ. ແທນທີ່ຈະເພີ່ມຊຸດຍ່ອຍເຊັ່ນ
ລັກສະນະ ພວກເຮົາແນະນໍາໃຫ້ໃຊ້ .aj extension ແລະລວມທັງໄຟລ໌ເຫຼົ່ານີ້ຢູ່ໃນຂອງທ່ານ
ແພັກເກດທີ່ມີຢູ່ແລ້ວແທນ.
ເຂົ້າກັນໄດ້
AspectJ ແມ່ນສ່ວນຂະຫຍາຍທີ່ເຂົ້າກັນໄດ້ກັບພາສາການຂຽນໂປຼແກຼມ Java. ການລວບລວມຂໍ້ມູນ AspectJ
ຍຶດຫມັ້ນກັບ ໄດ້ Java ພາສາ ຂໍ້ມູນຈໍາເພາະ, ຄັ້ງທີສອງ ສະບັບ (ປຶ້ມ)
http://java.sun.com/docs/books/jls/index.html ແລະ ໄດ້ Java virtual ເຄື່ອງ
ໂດຍສະເພາະ, ຄັ້ງທີສອງ ສະບັບ (ປຶ້ມ) http://java.sun.com/docs/books/vmspec/index.html ແລະ
ແລ່ນຢູ່ໃນທຸກແພລະຕະຟອມທີ່ເຫມາະສົມກັບ Java 2. ລະຫັດທີ່ມັນສ້າງແມ່ນແລ່ນຢູ່ໃນ Java 1.1 ຫຼື
ເວທີທີ່ເຂົ້າກັນໄດ້ຕໍ່ມາ. ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມກ່ຽວກັບຄວາມເຂົ້າກັນໄດ້ກັບ Java ແລະກັບ
ການປ່ອຍທີ່ຜ່ານມາຂອງ AspectJ, ເບິ່ງ "" >.
ຕົວຢ່າງ
A ງ່າຍດາຍ ຍົກຕົວຢ່າງ
ລວບລວມສອງໄຟລ໌:
ajc HelloWorld.java Trace.java
An ຍົກຕົວຢ່າງ ການນໍາໃຊ້ -argfile/@
ເພື່ອຫຼີກເວັ້ນການລະບຸຊື່ໄຟລ໌ໃນແຖວຄໍາສັ່ງ, ລາຍຊື່ໄຟລ໌ຕົ້ນສະບັບໃນເສັ້ນຂັ້ນດ້ວຍເສັ້ນ
ຂໍ້ຄວາມ argfile. ເສັ້ນທາງໄຟລ໌ຕົ້ນສະບັບອາດຈະເປັນຢ່າງແທ້ຈິງຫຼືເປັນພີ່ນ້ອງກັບ argfile, ແລະອາດຈະ
ລວມເອົາໄຟລ໌ argfiles ອື່ນໆໂດຍ @-reference. ໄຟລ໌ຕໍ່ໄປນີ້ source.lst ປະກອບດ້ວຍ
ໄຟລ໌ absolute ແລະ relative ແລະ @-references:
Gui.java
/home/user/src/Library.java
data/Repository.java
data/Access.java
@../../common/common.lst
@/home/user/src/lib.lst
view/body/ArrayView.java
ລວບລວມໄຟລ໌ໂດຍໃຊ້ແບບຟອມ -argfile ຫຼື @:
ajc -argfile sources.lst
ajc @sources.lst
Argfiles ຍັງໄດ້ຮັບການສະຫນັບສະຫນູນໂດຍ jikes ແລະ javac, ດັ່ງນັ້ນທ່ານສາມາດນໍາໃຊ້ໄຟລ໌ໃນການກໍ່ສ້າງແບບປະສົມ.
ຢ່າງໃດກໍຕາມ, ສະຫນັບສະຫນູນແຕກຕ່າງກັນ:
· ພຽງແຕ່ ajc ຍອມຮັບຕົວເລືອກແຖວຄໍາສັ່ງ
· Jikes ແລະ Javac ບໍ່ຍອມຮັບການອ້າງອີງພາຍໃນ @argfile.
· Jikes ແລະ Javac ພຽງແຕ່ຍອມຮັບແບບຟອມ @file ໃນແຖວຄໍາສັ່ງ.
An ຍົກຕົວຢ່າງ ການນໍາໃຊ້ - ທາງເຂົ້າ ແລະ - ທາງດ້ານ
ການຖັກແສ່ວ bytecode ໂດຍໃຊ້ -inpath: AspectJ 1.2 ຮອງຮັບການທໍໄຟລ໌ .class ໃນການປ້ອນ zip/jar
ໄຟລ໌ແລະໄດເລກະທໍລີ. ການນໍາໃຊ້ jars ການປ້ອນຂໍ້ມູນແມ່ນຄ້າຍຄືການສັງລວມໄຟລ໌ແຫຼ່ງທີ່ສອດຄ້ອງກັນ,
ແລະ binary ທັງຫມົດແມ່ນປ່ອຍອອກມາເພື່ອຜົນຜະລິດ. ເຖິງແມ່ນວ່າ compilers ທີ່ສອດຄ່ອງກັບ Java ອາດຈະແຕກຕ່າງກັນ
ຜົນຜະລິດຂອງເຂົາເຈົ້າ, ajc ຄວນຈະໃຊ້ເວລາເປັນການປ້ອນຂໍ້ມູນໄຟລ໌ຫ້ອງຮຽນທີ່ຜະລິດໂດຍ javac, jikes, eclipse,
ແລະ, ແນ່ນອນ, ajc. ລັກສະນະທີ່ລວມຢູ່ໃນ -inpath ຈະຖືກແສ່ວເຂົ້າໄປໃນຄືກັບ .class ອື່ນໆ
ໄຟລ໌, ແລະພວກມັນຈະສົ່ງຜົນກະທົບຕໍ່ປະເພດອື່ນໆຕາມປົກກະຕິ.
Aspect libraries ໂດຍໃຊ້ -aspectpath: AspectJ 1.1 ສະຫນັບສະຫນູນການທໍຜ້າຈາກຫ້ອງສະຫມຸດແບບອ່ານເທົ່ານັ້ນ
ລັກສະນະທີ່ປະກອບດ້ວຍ. ເຊັ່ນດຽວກັນກັບ jars ວັດສະດຸປ້ອນ, ພວກເຂົາເຈົ້າມີຜົນກະທົບການປ້ອນຂໍ້ມູນທັງຫມົດ; ບໍ່ເຫມືອນກັບ jars ປ້ອນ, ເຂົາເຈົ້າ
ຕົວຂອງມັນເອງບໍ່ໄດ້ຮັບຜົນກະທົບຫຼືປ່ອຍອອກມາເປັນຜົນຜະລິດ. ແຫຼ່ງຂໍ້ມູນທີ່ລວບລວມດ້ວຍຫ້ອງສະຫມຸດລັກສະນະ
ຕ້ອງດໍາເນີນການກັບຫ້ອງສະຫມຸດລັກສະນະດຽວກັນຢູ່ໃນ classpath ຂອງເຂົາເຈົ້າ.
ຕົວຢ່າງຕໍ່ໄປນີ້ສ້າງຕົວຢ່າງການຕິດຕາມໃນສະພາບແວດລ້ອມເສັ້ນຄໍາສັ່ງ; ມັນສ້າງ
ຫ້ອງສະໝຸດດ້ານການອ່ານຢ່າງດຽວ, ລວບລວມບາງຊັ້ນຮຽນເພື່ອໃຊ້ເປັນ input bytecode, ແລະລວບລວມ.
ຫ້ອງຮຽນແລະແຫຼ່ງອື່ນໆທີ່ມີຫ້ອງສະຫມຸດລັກສະນະ.
ຕົວຢ່າງການຕິດຕາມແມ່ນຢູ່ໃນການແຈກຢາຍ AspectJ ({aspectj}/doc/examples/tracing). ນີ້
ໃຊ້ໄຟລ໌ຕໍ່ໄປນີ້:
aspectj1.1/
ຖັງ/
AJC
lib /
aspectjrt.jar
ຕົວຢ່າງ/
ຕິດຕາມ/
Circle.java
ຕົວຢ່າງMain.java
lib /
AbstractTrace.java
TraceMyClasses.java
notrac.lst
Square.java
tracelib.lst
tracev3.lst
TwoDShape.java
ລຸ້ນ 3/
Trace.java
TraceMyClasses.java
ຂ້າງລຸ່ມນີ້, ຕົວແຍກເສັ້ນທາງຖືກປະຕິບັດເປັນ ";", ແຕ່ຕົວແຍກໄຟລ໌ແມ່ນ "/". ຄໍາສັ່ງທັງຫມົດແມ່ນ
ຢູ່ໃນແຖວຫນຶ່ງ. ປັບເສັ້ນທາງ ແລະຄຳສັ່ງໃສ່ສະພາບແວດລ້ອມຂອງເຈົ້າຕາມຄວາມຕ້ອງການ.
ຕັ້ງຄ່າເສັ້ນທາງ, classpath, ແລະໄດເລກະທໍລີປະຈຸບັນ:
ຕົວຢ່າງ cd
ສົ່ງອອກ ajrt=../lib/aspectjrt.jar
ສົ່ງອອກ CLASSPATH="$ajrt"
ສົ່ງອອກ PATH = "../ ຖັງ:$PATH"
ສ້າງຫ້ອງສະໝຸດການຕິດຕາມແບບອ່ານຢ່າງດຽວ:
ajc -argfile tracing/tracelib.lst -outjar tracelib.jar
ສ້າງແອັບພລິເຄຊັນດ້ວຍການຕິດຕາມໃນຂັ້ນຕອນດຽວ:
ajc -aspectpath tracelib.jar -argfile tracing/notrace.lst -outjar tracedapp.jar
ແລ່ນແອັບພລິເຄຊັນດ້ວຍການຕິດຕາມ:
java -classpath "$ajrt;tracedapp.jar;tracelib.jar" tracing.ExampleMain
ສ້າງຄໍາຮ້ອງສະຫມັກທີ່ມີການຕິດຕາມຈາກ binaries ໃນສອງຂັ້ນຕອນ:
· (a) ສ້າງຫ້ອງຮຽນຄໍາຮ້ອງສະຫມັກ (ການນໍາໃຊ້ javac ສໍາລັບຜົນສໍາເລັດຂອງການສາທິດ):
ຫ້ອງຮຽນ mkdir
javac -d classes tracing/*.java
jar cfM app.jar -C classes .
· (b) ສ້າງຄໍາຮ້ອງສະຫມັກທີ່ມີການຕິດຕາມ:
ajc -inpath app.jar -aspectpath tracelib.jar -outjar tracedapp.jar
ແລ່ນແອັບພລິເຄຊັນດ້ວຍການຕິດຕາມ (ຄືກັນກັບຂ້າງເທິງ):
java -classpath "$ajrt;tracedapp.jar;tracelib.jar" tracing.ExampleMain
ດໍາເນີນການຄໍາຮ້ອງສະຫມັກໂດຍບໍ່ມີການຕິດຕາມ:
java -classpath "app.jar" tracing.ExampleMain
ໄດ້ AspectJ ນັກຂຽນ API
AspectJ compiler ຖືກປະຕິບັດຢ່າງສົມບູນໃນ Java ແລະສາມາດເອີ້ນວ່າ Java class.
ການໂຕ້ຕອບດຽວທີ່ຄວນຈະພິຈາລະນາສາທາລະນະແມ່ນວິທີການສາທາລະນະໃນ
org.aspectj.tools.ajc.Main. ຕົວຢ່າງ: ຫຼັກ(String[] args) ເອົາມາດຕະຖານ AJC ຄໍາສັ່ງ
ການໂຕ້ຖຽງແຖວ. ນີ້ຫມາຍຄວາມວ່າວິທີທາງເລືອກທີ່ຈະດໍາເນີນການ compiler ແມ່ນ
java org.aspectj.tools.ajc.Main [ທາງເລືອກ...] [ແຟ້ມ ...]
ເພື່ອເຂົ້າເຖິງຂໍ້ຄວາມ compiler ທີ່ເປັນໂປຼແກຼມ, ໃຫ້ໃຊ້ວິທີການ setHolder(IMessageHolder
ຜູ້ຖື) ແລະ / ຫຼື ແລ່ນ(String[] args, IMessageHolder ຜູ້ຖື). AJC ລາຍງານຂໍ້ຄວາມຂອງແຕ່ລະຄົນ
ຜູ້ຖືໃຊ້ IMessageHolder.handleMessage(..). ຖ້າທ່ານຕ້ອງການເກັບກໍາຂໍ້ຄວາມ,
ການນໍາໃຊ້ MessageHandler ເປັນຂອງທ່ານ IMessageHolder. ສໍາລັບຕົວຢ່າງ, ລວບລວມແລະດໍາເນີນການ
ຕິດຕາມດ້ວຍ aspectjtools.jar ກ່ຽວກັບ classpath:
ນຳເຂົ້າ org.aspectj.bridge.*;
ນໍາເຂົ້າ org.aspectj.tools.ajc.Main;
ການນໍາເຂົ້າ java.util.Arrays;
ຫ້ອງຮຽນສາທາລະນະ WrapAjc {
ສາທາລະນະ void static void ຕົ້ນຕໍ (String [] ຖຽງ) {
Main compiler = new Main();
MessageHandler m = ໃຫມ່ MessageHandler();
compiler.run(args, m);
IMessage[] ms = m.getMessages(null, true);
System.out.println("ຂໍ້ຄວາມ: " + Arrays.asList(ນາງສາວ));
}
}
Stack ຮ່ອງຮອຍ ແລະ ໄດ້ ໄຟລ໌ຕົ້ນສະບັບ ຄຸນລັກສະນະ
ບໍ່ເຫມືອນກັບ compilers java ແບບດັ້ງເດີມ, AspectJ compiler ອາດຈະສ້າງໃນບາງກໍລະນີ
classfiles ຈາກຫຼາຍແຫຼ່ງໄຟລ໌. ແຕ່ຫນ້າເສຍດາຍ, ຮູບແບບໄຟລ໌ຕົ້ນສະບັບ Java class
ບໍ່ຮອງຮັບຄຸນສົມບັດ SourceFile ຫຼາຍອັນ. ເພື່ອໃຫ້ແນ່ໃຈວ່າໄຟລ໌ແຫຼ່ງທັງຫມົດ
ຂໍ້ມູນແມ່ນມີຢູ່, compiler AspectJ ອາດຈະໃນບາງກໍລະນີເຂົ້າລະຫັດຫຼາຍຊື່ໄຟລ໌
ໃນຄຸນລັກສະນະ SourceFile. ເມື່ອ Java VM ສ້າງການຕິດຕາມ stack, ມັນໃຊ້ນີ້
ຄຸນລັກສະນະເພື່ອລະບຸໄຟລ໌ແຫຼ່ງ.
(AspectJ 1.0 compiler ຍັງສະຫນັບສະຫນູນການຂະຫຍາຍໄຟລ໌ .class ຂອງ JSR-45. ເຫຼົ່ານີ້.
ອະນຸຍາດໃຫ້ດີບັກທີ່ສອດຄ້ອງກັນ (ເຊັ່ນ: jdb ໃນ Java 1.4.1) ເພື່ອລະບຸໄຟລ໌ທີ່ເຫມາະສົມແລະເສັ້ນ.
ເຖິງແມ່ນໃຫ້ໄຟລ໌ແຫຼ່ງຫຼາຍອັນສໍາລັບຫ້ອງຮຽນດຽວ. ການສະຫນັບສະຫນູນ JSR-45 ແມ່ນວາງແຜນໄວ້ສໍາລັບ ajc in
AspectJ 1.1, ແຕ່ບໍ່ໄດ້ຢູ່ໃນການປ່ອຍເບື້ອງຕົ້ນ. ເພື່ອຮັບເອົາໄຟລ໌ .class ທີ່ສາມາດດີບັກໄດ້ຢ່າງສົມບູນ, ໃຫ້ໃຊ້
ທາງເລືອກ -XnoInline.)
ອາດຈະເປັນເວລາດຽວທີ່ເຈົ້າອາດຈະເຫັນຮູບແບບນີ້ແມ່ນເວລາທີ່ທ່ານເບິ່ງ stack traces, ບ່ອນທີ່ທ່ານ
ອາດຈະພົບຮ່ອງຮອຍຂອງຮູບແບບ
java.lang.NullPointerException
ທີ່ Main.new$constructor_call37(Main.java;SynchAspect.java[1k]:1030)
ບ່ອນທີ່ແທນທີ່ຈະເປັນປົກກະຕິ
ໄຟລ໌:LineNumber
ຮູບແບບ, ເຈົ້າເຫັນ
File0;File1[Number1];File2[Number2] ... :LineNumber
ໃນກໍລະນີນີ້, LineNumber ແມ່ນການຊົດເຊີຍປົກກະຕິໃນສາຍບວກກັບ "ເສັ້ນເລີ່ມຕົ້ນ" ຂອງຕົວຈິງ
ແຫຼ່ງໄຟລ໌. ນັ້ນຫມາຍຄວາມວ່າທ່ານໃຊ້ LineNumber ທັງສອງເພື່ອກໍານົດໄຟລ໌ແຫຼ່ງແລະເພື່ອຊອກຫາ
ເສັ້ນທີ່ມີບັນຫາ. ຕົວເລກໃນ [ວົງເລັບ] ຫຼັງຈາກແຕ່ລະໄຟລ໌ບອກທ່ານ virtual "ເລີ່ມຕົ້ນ
line" ສໍາລັບໄຟລ໌ນັ້ນ (ໄຟລ໌ທໍາອິດມີການເລີ່ມຕົ້ນຂອງ 0).
ໃນຕົວຢ່າງຂອງພວກເຮົາຈາກການຕິດຕາມການຍົກເວັ້ນຕົວຊີ້ null, ເສັ້ນເລີ່ມຕົ້ນ virtual ແມ່ນ 1030.
ເນື່ອງຈາກໄຟລ໌ SyncAspect.java "ເລີ່ມຕົ້ນ" ຢູ່ແຖວ 1000 [1k], LineNumber ຊີ້ໄປຫາແຖວ.
30 ຂອງ SyncAspect.java.
ດັ່ງນັ້ນ, ໃນເວລາທີ່ປະເຊີນຫນ້າກັບຮອຍ stack ດັ່ງກ່າວ, ວິທີການເພື່ອຊອກຫາສະຖານທີ່ແຫຼ່ງທີ່ແທ້ຈິງແມ່ນເພື່ອ
ເບິ່ງບັນຊີລາຍຊື່ຂອງ "ເສັ້ນເລີ່ມຕົ້ນ" ເພື່ອຊອກຫາຕົວເລກທີ່ຢູ່ພາຍໃຕ້ເສັ້ນສະແດງ
ເລກ. ນັ້ນແມ່ນໄຟລ໌ທີ່ສະຖານທີ່ແຫຼ່ງຕົວຈິງສາມາດພົບໄດ້. ຫຼັງຈາກນັ້ນ, ລົບ
ວ່າ "ເສັ້ນເລີ່ມຕົ້ນ" ຈາກຕົວເລກແຖວທີ່ສະແດງເພື່ອຊອກຫາຕົວເລກຕົວຈິງພາຍໃນນັ້ນ
ຍື່ນ.
ໃນໄຟລ໌ຊັ້ນຮຽນທີ່ມາຈາກໄຟລ໌ແຫຼ່ງດຽວ, AspectJ compiler ສ້າງ
ຄຸນລັກສະນະ SourceFile ທີ່ສອດຄ່ອງກັບ Java compilers ແບບດັ້ງເດີມ.
AJC(1)
ໃຊ້ ajc ອອນໄລນ໌ໂດຍໃຊ້ບໍລິການ onworks.net