問題タブ [classcastexception]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - JavaGenericsGetThisトリックの説明
私はJavaGenericsについて読んでいて、少し混乱しているこのトピックに出くわしました。
差出人:http ://www.angelikalanger.com/GenericsFAQ/FAQSections/ProgrammingIdioms.html#FAQ205
いくつかの画面を下にスクロールします...
ターゲットタイプがタイプパラメータであるキャストは、実行時に検証できず、チェックされていない警告が発生します。この安全でないキャストは、予期しないClassCastExceptionの可能性をもたらすため、回避するのが最善です。
上記のコードがClassCastExceptionをスローする例を誰かに教えてもらえますか?
ありがとう。
java - Java swing- エスケープ キー イベントにより、ルック アンド フィールで classCastException が発生する
私のアプリケーションは、患者の記録を処理します。メイン フレームでは、ユーザーは複数の内部フレームを開くことができます。各内部フレームにはタブ付きペインが含まれ、ユーザーが作成した各タブには、患者のデータを入力できるフォームと、追加されたすべての患者が表示される jtable が含まれます。
ユーザーが jtable の行 (患者) をクリックすると、フォームのフィールドに患者のデータが入力され、"Escape" を押すとフォームのフィールドがクリアされ、ユーザーは別の患者を検索/チェック/入力することができます。
私の問題は、このエスケープ キー イベントが、使用しているSubstance ルック アンド フィールで classCastException をスローすることです。実行されたアクション用に作成したコードは正常に機能します。この問題は、タブ付きペインを使用し始めてから発生しました (すべてが単一のペインで作成される前)。ルック アンド フィールを egWindows に変更しても、例外はスローされません。何か考えはありますか?
コードのサンプルを次に示します。
これはスローされる例外です:
そして、これは例外を引き起こすコードです:
xml - Android の XML レイアウトを展開しようとすると Eclipse ClassCastException が発生する
私は Java、Eclipse、および Android の開発に不慣れなので、スペルなどの基本的なことを何度か確認しましたが、単純なものが欠けている可能性があります。
公開されている Android SDK には番号ピッカー コントロール (日付ピッカーで使用されるものなど) がないため、Android ソースに存在するコントロールを "複製して所有する" というのが一般的な知恵です。
そのために、NumberPicker のコードを自分のプロジェクトとその依存関係である NumberPickerButton にコピーしました。サポート リソースもコピーしました。
私が抱えている問題は、NumberPicker をレイアウトに含めようとすると、Eclipse 内でレンダリングされたレイアウトのバージョンが機能しないことです。
そのタグを追加すると、XML ファイルのレイアウト ビューに次のエラーのみが表示されます。
完全修飾名と非修飾名の両方を試しましたが、違いはありません。
奇妙なことに、コントロールは実行時に機能しますが、Eclipse ではレンダリングされません。
この問題の解決策はありますか? 私は何か間違ったことをしているだけですか?
必要に応じて、プロジェクトのコードを追加して明確にすることができます。
内部の Android ウィジェットを参照すると、Eclipse のレイアウト ビューでは問題なく動作しますが、その方法で操作するのは不器用であり、将来的には壊れる可能性があります。
Eclipse のスタック トレースを次に示します。
java - java.lang.reflect.Method.invoke の Object-result をキャストするときの java.lang.ClassCastException
urlClassLoader を使用して、Eclipse RCP アプリケーションから外部クラスを動的にロードします。invoke() メソッドは、自己定義型のオブジェクトを返します。
このオブジェクトをキャストしようとすると、java.lang.ClassCastException が発生します: rts.data.RTSDataSet は rts.data.RTSDataSet にキャストできません。その理由は、ここに別の ClassLoader があるためだと私には思えます。私の質問は次のとおりです: ClassLoader を適切に設定するにはどうすればよいですか?
助けてくれてありがとう!
jakarta-ee - システム クラスパスを使用せずに、J2EE/Weblogic 10 で同じクラスローダーを使用してインターフェイス クラスを共有する
Weblogic 10.0 (または 10.3) appserver で実行されている「フレームワーク」があります。このフレームワークは複数のエンタープライズ アプリで構成され、それぞれが異なるリソース アダプターを担当します。クライアント アプリケーションがドメインにデプロイされ、JNDI を使用してリソース アダプタ コネクタ クラスの 1 つへの参照を取得し、その呼び出しを実行すると、全員が満足します。
祖先は、コネクタ用のインターフェースクラスと、システムクラスパス上のその他のインターフェースクラスを私に残しました-これは正常に機能します.
新しい要件は、アーキテクチャへの影響を可能な限り抑えながら、システム クラスパスの「汚染」を排除することです。私は WLS 固有の「共有 J2EE ライブラリ」を試しましたが、インターフェイス クラスをライブラリにパッケージ化して他のアプリで参照することはできますが、クラスは別のアプリ クラスローダーによってロードされていることを確認する必要がありました。 JNDI ルックアップ オブジェクトをインターフェイスにキャストしようとすると ClassCastException が発生します。
知っておくべきことは何ですか?現在、システム クラスパス エントリを使用して、このフレームワークに別のドメインを使用するようにクライアントにアドバイスしていますが、それを受け入れるかどうかはわかりません。
ありがとう!
jakarta-ee - JNDI と J2EE の特定の ClassCastException を理解するのに助けが必要
エンタープライズ アプリケーション A と B を (WLS 10.0 で) デプロイしています。A は「フレームワーク」、B はクライアント アプリです。クライアントは次の呼び出しを発行します。
ConnectionFactory はインターフェースであり、次のように定義されています。
何が起こるか:
- インターフェイス クラスを含む jar がシステム クラスパスにある場合、2 行目は正常に実行されます。
- インターフェイス クラスがシステム クラスパス上になく、アプリケーションとは別にパッケージ化されている場合、2 行目で ClassCastException がスローされます (これには、o が ConnectionFactoryImpl であるという情報テキストが含まれます)。
なぜこれが可能なのですか?JNDI ルックアップはリモート オブジェクトにスタブのみを返すと仮定します (この点で正しいでしょうか?) では、インターフェイス クラスのクラスローダーが異なる場合、なぜ問題になるのでしょうか?
私が期待する答えの種類:
- はい、それはあなたが経験したように起こるはずです...
- いいえ、それはこのように起こるべきではありません。
- あなたが説明した状況は非常に奇妙です。どこかの点を見逃していませんか?
- ... :)
また、誰かが JNDI とスタブがどのように機能するか、キャストがどこで行われるか (スタブのクライアント側で? またはリモート側の元のオブジェクトで?) などを明確にできるとよいでしょう。
ご協力いただきありがとうございます!
java - JVMクラスキャスト例外エラーメッセージの解釈-キャストできない元のタイプは何ですか
Linux上で実行されているIBMJVMを備えたJava実動システムがあります。
顧客から、ログに出力された次の例外が報告されます。から
java.lang.ClassCastException: [B incompatible with java.lang.String
返された個々の属性をキャストしようとした場合: javax.naming.directory.InitialDirContext(...)
この例外から、文字列に変換できなかったタイプを特定できません。「B」とは?
通常、クラスキャストのエラーメッセージは次のようになります。
java.lang.ClassCastException: java.lang.Integer incompatible with java.lang.String
しかし、ご覧のとおり、最初の印刷ではそうではありません。
Bという名前の実際のクラスがあるのではないかと思いましたが、javax.namingの下にあるクラスを見つけることができました...
ここで名前の難読化が行われていますか?
文字列にキャストする前に、インスタンスのクラスを出力するバージョンをお客様に送信する予定です。
i.getClass().getCanonicalName()
ただし、これらのピンポンは、アイデアがあり、その前に私を助けてくれる場合は、1週間かかります。 !!
java - 両方のクラスがまったく同じである場合にクラスキャスト例外を取得する
JBoss SEAMプロジェクトを実行していますが、フォームを表示するとこのエラーが発生します。
画面に表示されるフォームに関連するJPAクラスは常に同じですが、なぜ同じクラスなのかはわかりません。不可能に思えます。
java - ジャスト イン タイムのバグが原因で ClassCastException が発生しましたか?
このコードを考えると:
(ストリームを安全に閉じる方法についてのアドバイスはご遠慮ください。これはレガシー コードであり、新しいバージョンでは try / finally を使用します)
「ps.println(buffer.get(i))」で ClassCastException を取得します。
このメソッドは、文字列のみで満たされたリストで数回 (たとえば 5 回) 呼び出され、次に、文字列で満たされたリストと他のオブジェクト (たとえば、ErrorObject) で呼び出されます。最初の ErrorObject に到達した時点で、ClassCastException を取得します。 .
この問題は実稼働環境で発生しますが、Dev 環境では再現できません: Prod: jvm=IBM J9 VM 2.4 J2RE 1.6.0 IBM J9 2.4 AIX ppc-32 jvmap3260-20081105_25433 (JIT 有効、AOT 有効) Dev: WinXP、JDK 1.6 .0_16
このコードが失敗する理由はありますか?
最近パッチが適用されました。制作チームがjarを正しくアップグレードしなかったのではないかと心配していますが、上司はパッチが正しく適用されていることをすでに確認しています...
ジャスト イン タイム コンパイラが ps.println(Object) の代わりに ps.println(String) に ps.println を「接続」できるかどうか疑問に思っていました。それはそのような問題を説明できますが、これが可能かどうかはわかりません。
どんなアドバイスでも大歓迎です、事前に感謝します
編集:私は完全なスタックトレースを求められたので、ここにあります:
編集 2: javap -c