2013-08-29 4 views
0

Мое приложение было использовано com.ibm.ws.Transaction.TransactionManagerFactory в среде websphere runtime 6.1 (com.ibm.ws.runtime_6.1.0.jar).два пакета в одном файле jar имеют тот же класс

Теперь его необходимо перенести в websphere 8.5. Но в runtime 8.5 (com.ibm.ws.runtime.jar) TransactionManagerFactory определяется в двух пакетах: com.ibm.tx.jta.TransactionManagerFactory и com.ibm.ws.Transaction.TransactionManagerFactory.

Когда приложение компилируется, компилятор всегда, кажется, использует один в com.ibm.tx.jta, и показывает ошибку:

не может получить доступ к com.ibm.tx.jta.TransactionManagerFactory [JAVAC ] файл класса для com.ibm.tx.jta.TransactionManagerFactory не найден [javac] com.ibm.ws.Transaction.WebSphereTransactionManager tm = com.ibm.ws.Transaction.TransactionManagerFactory.getTransactionManager();

Как я могу заставить компилятор использовать правильный класс? Кто-нибудь есть идеи о том, как решить проблему?

Заранее спасибо

+0

Очистка/проверка пути к классу, очистка/проверка ваших операторов импорта. Пожалуйста, покажите код, который вы не можете скомпилировать. – Beryllium

+0

Соответствующие разделы файла make тоже будут хороши. –

ответ

0

Если это компиляция ошибка времени, то вам просто необходимо, чтобы полностью определить тип класса, и по буквам из типа в полной длине. Таким образом, компилятор не будет использовать тот, который вы хотите использовать, и вам также не придется гадать. Возможно, вам также придется корректировать зависимости проекта, надеюсь, что это даст правильный путь к классу, и вам не придется ругать вручную. Кроме того, используйте тот, от которого зависит ваш проект. Я думаю, это не Maven, если это действительно старый проект.

0

com.ibm.ws.Transaction - это не API, поэтому вы не должны использовать его в первую очередь. WAS_HOME/dev/was_public.jar содержит общедоступные API для продукта. Возможно, UOWManagerFactory или UOWSynchronizationRegistry будет лучше?