Maven protocプラグインと、Cygwin内に構築したprotoc実行可能ファイルを使用して、プロトコルバッファコードをコンパイルしようとしています。Cygwin または Windows コマンドラインからこれを行うことはできません。以下は、Windows で実行したときに得られる出力ですが、Cygwin から実行した場合のエラーも同じです。問題がパス変換にあった場合、そのうちの1つが機能すると予想されるため、これは奇妙だと思います。実行可能ファイルが Cygwin の g++ でビルドされたという事実が影響を与える可能性はありますか? (明らかに、問題のディレクトリは存在します。)
編集:mavenを写真から取り出して、protocを手動で呼び出すと、同じエラーが発生します。
編集 2: 相対パスまたは絶対パスを使用して Cygwin から手動で protoc を呼び出すことで、これを修正できます (ただし、チルダ展開は機能しません)。相対パスまたは絶対パスを使用して Windows から手動で protoc を呼び出すと、引き続き同じエラーが発生します。
[デバッグ] (f) outputDirectory = c:\cygwin64\home\dan\code\server\protocol\target\generated-sources\protobuf\java [デバッグ] (f) プロジェクト = MavenProject: server:protocol:1.0-SNAPSHOT @ c:\cygwin64\home\dan\code\server\protocol\pom.xml [デバッグ] (f) protoSourceRoot = c:\cygwin64\home\dan\code\server\protocol\src\main\proto [デバッグ] (f) protocPluginDirectory = c:\cygwin64\home\dan\code\server\protocol\target\protoc-plugins [デバッグ] (f) remoteRepositories = [ id: セントラル URL: https://repo.maven.apache.org/maven2 レイアウト: デフォルトのスナップショット: [有効 => false、更新 => 毎日] リリース: [有効 => true、更新 => 毎日] ] [デバッグ] (f) セッション = org.apache.maven.execution.MavenSession@24fb6a80 [デバッグ] (f) スキップ = false [デバッグ] (f) staleMillis = 0 [デバッグ] (f) temporaryProtoFileDirectory = c:\cygwin64\home\dan\code\server\protocol\target\protoc-dependencies [デバッグ] (f) writeDescriptorSet = false [デバッグ] -- 構成の終了 -- [警告] 'protocExecutable' パラメーターは構成されていません。デフォルトを使用しています: 'protoc' [デバッグ] プロト ソース ルート: [デバッグ] c:\cygwin64\home\dan\code\server\protocol\src\main\proto [デバッグ] [PROTOC] 実行可能ファイル: [デバッグ] [PROTOC] プロトコル [DEBUG] [PROTOC] Protobuf インポート パス: [DEBUG] [PROTOC] c:\cygwin64\home\dan\code\server\protocol\src\main\proto [DEBUG] [PROTOC] Java 出力ディレクトリ: [デバッグ] [PROTOC] c:\cygwin64\home\dan\code\server\protocol\target\generated-sources\protobuf\java [DEBUG] [PROTOC] Protobuf 記述子: [デバッグ] [PROTOC] c:\cygwin64\home\dan\code\server\protocol\src\main\proto\message.proto [DEBUG] [PROTOC] コマンド ライン オプション: [デバッグ] [PROTOC] --proto_path=c:\cygwin64\home\dan\code\server\protocol\src\main\proto --java_out=c:\cygwin64\home\dan\code\server\protocol\target\generated-sources\protobuf\java c:\cygwin64\home\dan\code\server\protocol\src\main\proto\message.proto [INFO] 1 つの proto ファイルを c:\cygwin64\home\dan\code\server\protocol\target\generated-sources\protobuf\java にコンパイルしています [エラー] PROTOC FAILED: c: 警告: ディレクトリが存在しません。c:\cygwin64\home\dan\code\server\protocol\src\main\proto\message.proto: --proto_path (または -I) を使用して指定されたパス内にファイルが存在しません。このファイルを含む --proto_path を指定する必要があります。proto_path は、.proto ファイル名の正確な接頭辞でなければならないことに注意してください。protoc は、2 つのパス (たとえば、絶対パスと相対パス) が等しい場合を判断するにはあまりにも馬鹿げています (想像以上に難しいです)。