私たちの主な焦点は、Javaベースのデスクトップアプリケーションです。アプリケーションのデータは、Hibernateを使用してH2データベースに保存されます。H2データベースはサーバーモードで実行されるため、他のクライアントがデータベースに接続できます。
サーバーでホストされているデータを表示するためにAndroidアプリケーションを構築することは可能ですか?AndroidアプリケーションのlibsフォルダーにHibernatejarを含めると、次のエラーが発生します。
[dx] trouble processing "javax/transaction/Transaction.class":
[dx]
[dx] Ill-advised or mistaken usage of a core class (java.* or javax.*)
[dx] when not building a core library.
[dx]
[dx] This is often due to inadvertently including a core library file
[dx] in your application's project, when using an IDE (such as
[dx] Eclipse). If you are sure you're not intentionally defining a
[dx] core class, then this is the most likely explanation of what's
[dx] going on.
[dx]
[dx] However, you might actually be trying to define a class in a core
[dx] namespace, the source of which you may have taken, for example,
[dx] from a non-Android virtual machine project. This will most
[dx] assuredly not work. At a minimum, it jeopardizes the
[dx] compatibility of your app with future versions of the platform.
[dx] It is also often of questionable legality.
[dx]
[dx] If you really intend to build a core library -- which is only
[dx] appropriate as part of creating a full virtual machine
[dx] distribution, as opposed to compiling an application -- then use
[dx] the "--core-library" option to suppress this error message.
[dx]
[dx] If you go ahead and use "--core-library" but are in fact
[dx] building an application, then be forewarned that your application
[dx] will still fail to build or run, at some point. Please be
[dx] prepared for angry customers who find, for example, that your
[dx] application ceases to function once they upgrade their operating
[dx] system. You will be to blame for this problem.
[dx]
[dx] If you are legitimately using some code that happens to be in a
[dx] core package, then the easiest safe alternative you have is to
[dx] repackage that code. That is, move the classes in question into
[dx] your own package namespace. This means that they will never be in
[dx] conflict with core system classes. JarJar is a tool that may help
[dx] you in this endeavor. If you find that you cannot do this, then
[dx] that is an indication that the path you are on will ultimately
[dx] lead to pain, suffering, grief, and lamentation.
[dx]
[dx] 1 error; aborting
javax名前空間を使用する2つの必須のHibernateライブラリがあります(hibernate-jpa-2.0-api.1.0.1-Final.jarおよびjboss-transaction-api_1.1_spec-1.0.0.Final.jar)。
- すべてのライブラリを.apkに結合しようとし、予約された名前空間を使用してクラスを見つけるため、例外をスローします。
- クラスは、Android / Javaの一部であるシステム(コア)クラスと競合する可能性があります。
このエラー/警告の最後の段落は、私がやろうとしていることに当てはまると思います。
- JarJarのようなツールを使用すると役立ちますか?
- コードの再パッケージ化はライセンスとどのように連携しますか?
- すべてのコードを再パッケージ化するのは難しいでしょうか?
- とにかくサードパーティがjavaxでパッケージを作成するのはなぜですか?
編集:私はantを使用して、自動生成されたビルドファイルとコマンド「antdebug」を介してAndroidプロジェクトをコンパイルしています。