لماذا لا يتجمع جثة وقت النسيج في العمل في فصل الربيع؟

StackOverflow https://stackoverflow.com/questions/901632

سؤال

تحديث 5: لقد قمت بتنزيل أحدث إصداريات الربيع IDE بناء على أحدث كسوف. عندما استيراد مشروعي كمشروع في مافن، يبدو أن Eclipse / STS لاستخدام أهداف مافن لبناء مشروعي. هذا يعني أن Jewelj يعمل أخيرا بشكل صحيح في الكسوف.

تحديث 4: لقد انتهى الأمر فقط باستخدام البرنامج المساعد MAVEN + JEPINGJ للنسيج في وقت الترجمة، تجاوز آلية الكسوف بشكل فعال.

تحديث 3: يبدو أن المكونات الكسوف لجوانب Jewesj يكسر قدرة الكسوف على النشر بشكل صحيح إلى Tomcat. فقط عن طريق إزالة إمكانية جوانب جوانب على مشروع هل يمكنني الحصول عليها بشكل صحيح مرة أخرى. مزعج جدا.

تحديث 2: لدي هذا يعمل الآن في الكسوف. يجعلني غير مرتاح للغاية أن أقول هذا، لكن ليس لدي أي فكرة عن كيفية عملها من أي من الكسوف أو أركانها. يبدو أنه مشكلة ترجمة بدلا من مشكلة تشغيل وقت التشغيل.

التحديث 1: يبدو أنني حصلت على هذا العمل عبر مبنيات Maven، لكن ليس لدي أي فكرة عن كيف. الكسوف لا يزال لا يعمل. الشيء الوحيد الذي تغيرت في pom.xml كان يضيف معلمات تكوين هذه (غير ضئيلة):

<source>1.6</source>
<complianceLevel>1.6</complianceLevel>
<verbose>true</verbose>
<showWeaveInfo>true</showWeaveInfo>
<outxml>true</outxml>

أنا قلق فعلا من أن لدي تكرار هذه المشكلة, ، حيث يعمل كل شيء بشكل غير متسق. سأبقي هذه السؤال محدثة لأنني أعرف المزيد.

فيما يتعلق بالكتكسل، قمت ببعض التقدم من خلال أخذ الجوانب الثنائية التي أرغب في نسجها - في هذه الحالة Spring-switchs.jar. - ونسخه من فصف بلدي. ثم أضيف هذا الجرة الخارجية الآن إلى بلدي مسار الجانب. وبعد بعد القيام بذلك، يظهر لي الكسوف بشكل صحيح علامات جوانب في التعليمات البرمجية الخاصة بي. إنه أمر مزعج لا أستطيع المغادرة Spring-switchs.jar. في جافا بناء المسار الذي يتم الحفاظ عليه من قبل Maven بالنسبة لي عبر المكونات المكونة من مافن. لكن لسبب ما، ومع ذلك، فإن المكون الإضافي جوانج لا يرى الجوانب الثنائية ما لم يضافوا صراحة إلى مسار الجانب.


البريد الأصلي: تضمين التغريدة التغريدة لأناقة التوضيحية هي عبارة عن شرح في فصل الربيع يتيح التبعيات أن يتم حقنها في كائنات إنشاء مثبتة خارجية إلى الربيع (على سبيل المثال، عن طريق السبات أو بعض فئة المصنع).

كنت أستخدم هذا التعليق التوضيحي سابقا مع النسيج وقت التحميل خاصة عمل. من حين لآخر أنني سأحمل ولا شيء سيحقق. هذه القضية مبكرة هذا سؤال stackoverflow. وبعد لم تكن هناك الكثير من الإجابات، ولكن معظمها اقترحت أن أحاول تسوية وقت الترجمة بدلا من ذلك بسبب موثوقية أكبر.

لقد قمت بتثبيت المكونات المكونة للجوانب للكسوف والمعيب. كل من هذه المنتجات ما يبدو أن فئات مترجمة بشكل صحيح. لقد فتحت واحدة من الفئات في محرر نصوص قبل مجموعة Jewelj ولم يتم العثور على مراجع إلى Jewelj. فتحت الأمر بعد تجميع جوانب وكسب كل من الإصدارات التي تم إنشاؤها في كلا من الكسوف والرجوع إليها org.aspectj.weaver.methoddeclarmationless.. وبعد هذا هو السبب في أنني أفترض أنه يجمع بشكل صحيح. المشكلة هي أنه بمجرد نشرها، لا يتم حقن أي تبعيات.

بلدي الربيع ApplicationContext.xml. هل تشمل ما يلي:

    <context:spring-configured />

    <context:component-scan base-package="com.myapp" />

هو ما ورد أعلاه كل ما هو مطلوب للصفات التي تحمل علامة configigable لتكون di done؟ أثناء التحويل من نسج وقت التحميل إلى النسيج تجميع الوقت، أزلت meta-inf / aop.xml, u003Ccontext:load-time-weaver /> من وجهة نظري ApplicationContext.xml., ، وبرينغ تومكات ويفر من بلدي context.xml..

كيف يمكنني التحقيق في هذه المشكلة أكثر؟ ما هي الأسباب المحتملة؟

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

المحلول

إنه يعمل بالنسبة لنا على مافن باستخدام نسج تجميع الوقت، حاول إضافة الإضافات التالية:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
    <compilerVersion>1.6</compilerVersion>
    <fork>true</fork>
    <source>1.6</source>
    <target>1.6</target>
</configuration>
</plugin>

<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<executions>
    <execution>
        <id>compile</id>
        <configuration>
            <source>1.6</source>
            <target>1.6</target>
            <verbose>false</verbose>
            <outxml>true</outxml>
            <aspectLibraries>
                <aspectLibrary>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring-aspects</artifactId>
                </aspectLibrary>
            </aspectLibraries>
        </configuration>
        <goals>
            <goal>compile</goal>
        </goals>
    </execution>
    <execution>
        <id>test-compile</id>
        <configuration>
            <source>1.6</source>
            <target>1.6</target>
            <verbose>false</verbose>
            <aspectLibraries>
                <aspectLibrary>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring-aspects</artifactId>
                </aspectLibrary>
            </aspectLibraries>
        </configuration>
        <goals>
            <goal>test-compile</goal>
        </goals>
    </execution>
</executions>
<dependencies>
    <dependency>
        <groupId>org.aspectj</groupId>
        <artifactId>aspectjweaver</artifactId>
        <version>1.6.4</version>
    </dependency>
</dependencies>
</plugin>

تتم القيام به كخط خطير منفصلين للسماح لك بإضافة مكتبات جانبية مختلفة لاختبار الوحدات والتجميع.

ستحتاج أيضا إلى التبعية التالية التي تمت إضافتها لمكتبة Spring-Jewess:

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-aspects</artifactId>
        <scope>compile</scope>
    </dependency>

نصائح أخرى

لقد قمت بنجاح بتكوين النسيج في وقت التحميل في تطبيقي، إذا كان هذا بديلا لك.

بيئتي:

  • JDK-1.6.
  • Spring-2.5.6.
  • JPA مع Eclipselink-1.1.0

تفاصيل التكوين:

تكوين الربيع XML:

<context:annotation-config/>
<context:spring-configured/>
<context:load-time-weaver/>

<bean id="baseEntity" class="package.name.BaseEntity" scope="prototype">
  <property name="historyHandler" ref="historyHandler" />
</bean>

<bean id="historyHandler" class="package.name.HistoryJpaHandler" scope="prototype">
  <property name="historyDao" ref="historyDao" />
</bean>

<bean id="historyDao" class="package.name.HistoryJpaDao">
  <property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>

التوضيحية الربيع

@Configurable("baseEntity")
public abstract class BaseEntity

@Configurable("historyHandler")
public class HistoryJpaHandler extends SessionEventAdapter implements HistoryHandler 

معلمة Java VM.

<JAVA_HOME>/bin/java -javaagent:/full/path/to/spring-agent-2.5.6.jar

يتم إنشاء مثيلات HistoryHandler و Paseentitty بواسطة Ecliselink. يتم تعيين Historyhandler في Paseentitty وتاريخه في HistoryHandler بواسطة Load-TimeWeaving.

يمكنك ضبط المعلمة VM في تكوين تشغيل Eclipse أو في Tomcats Catalina.sh/bat.

إجراء حقل من ACONFIGIRE CLASE NULLPOUNTEREXCHEPTION إذا كنت لا تكوين ربيعك بشكل صحيح لهذا الشرح. اتبع هذه الخطوات لإجراء التعليقات التشريحية التغريدة

وتسمى هذه الطريقة جوانب بناء الوقت النسيج لحقن الفاصوليا الربيعية لفصولك غير الربيعية.

الخطوة الأولى هي تثبيت هذه الإضافات في Eclipse:

من هذين موقعين التحديثين تثبيت أي eclipse يوحي:

http://download.eclipse.org/tools/ajdt/43/update
http://dist.springsource.org/release/AJDT/configurator/ 

بعد التثبيت، انقر بزر الماوس الأيمن فوق المشروع والقيام به:

Configure > Convert to Aspectj
Maven > Update

بعد ذلك، تحتاج إلى إضافة هذه إلى Pom.xml:

تحت التبعيات إضافة:

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-aspects</artifactId>
    <version>4.0.2.RELEASE</version>
</dependency>

ضمن الإضافات:

        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>aspectj-maven-plugin</artifactId>
            <version>1.5</version>
            <configuration>
                <showWeaveInfo>true</showWeaveInfo>
                <source>1.7</source>
                <target>1.7</target>
                <Xlint>ignore</Xlint>
                <complianceLevel>1.7</complianceLevel>
                <encoding>UTF-8</encoding>
                <verbose>false</verbose>
                <aspectLibraries>
                    <aspectLibrary>
                        <groupId>org.springframework</groupId>
                        <artifactId>spring-aspects</artifactId>
                    </aspectLibrary>
                </aspectLibraries>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>compile</goal>
                        <goal>test-compile</goal>
                    </goals>
                </execution>
            </executions>
            <dependencies>
                <dependency>
                    <groupId>org.aspectj</groupId>
                    <artifactId>aspectjrt</artifactId>
                    <version>1.7.0</version>
                </dependency>
                <dependency>
                    <groupId>org.aspectj</groupId>
                    <artifactId>aspectjtools</artifactId>
                    <version>1.7.0</version>
                </dependency>
            </dependencies>
        </plugin>

الأهمية: لا تستخدم أي <pluginManagment> علامة أسفل <build> بطاقة شعار. يجب أن يكون Pom.xml الخاص بك شيء مثل هذا:

<project ....>
    ....
    <dependencies>
        <dependency> 
                    ....
        </dependency>
                ....
    </dependencies>
    <build>
        <plugins>
            <plugin>
                            ....
            </plugin>
                        ....
        </plugins>
    </build>
</project>

وأضطلع أخيرا <context:spring-configured /> إلى ملف تكوين سياق تطبيق الربيع الخاص بك.

الآن يمكنك التعليق على فئة POJO كما @Configurable وحقن حبوب الربيع في ذلك باستخدام @Autowired حاشية. ملاحظة. وبهذه الطريقة كلما قمت بإجراء مثيل جديد من POJO، سيتم تكوينه (مثل حقنه بالتبعية) تلقائيا.

فيما يتعلق بقضايا كاشف الكسوف الخاصة بك، قد تجد هذا مفيدا.

ال M2ECLIPSE البرنامج المساعد لديه اختياري التكامل AJDT.. وبعد يقرأ التكامل قسم جوانب Spirlibaries من تكوين Jewelj-Maven-Plugin's Configuration، ويساهم في الجرار إلى مسار Eclipse's EXPERS.

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