Java 有没有一种方法可以输出所有可用于gradle/maven导入的类

Java 有没有一种方法可以输出所有可用于gradle/maven导入的类,java,maven,gradle,Java,Maven,Gradle,我是vim/neovim用户,我想知道是否可以简化向java文件添加导入的任务,而不必使用intellij或语言服务器。 所以我的想法是得到一个所有类的列表,然后以某种方式使用这个列表来插入一个import语句 来说明我的想法。假设我的光标在这里 var a = List.of(1); ^ 我调用了一些vimscript,它给了我一个可过滤的导入列表,其中包括list 也许类似于hoogle?您可以编写一个gradle任务,将所有类输出到一个文件中。乙二醇 task dumpC

我是vim/neovim用户,我想知道是否可以简化向java文件添加导入的任务,而不必使用intellij或语言服务器。 所以我的想法是得到一个所有类的列表,然后以某种方式使用这个列表来插入一个import语句

来说明我的想法。假设我的光标在这里

var a = List.of(1);
        ^
我调用了一些vimscript,它给了我一个可过滤的导入列表,其中包括
list


也许类似于hoogle?

您可以编写一个gradle任务,将所有类输出到一个文件中。乙二醇

task dumpClasses {
    inputs.files configurations.compile
    outputs.file "$buildDir/dumpClasses.txt"
    doLast {
        file("$buildDir/dumpClasses.txt").withWriter { writer ->
            configurations.compile.each { file ->
                FileTree tree = file.name.endsWith('.jar')
                   ? zipTree(file)
                   : (file.directory ? fileTree(file) : null)
                if (tree) {
                    tree.matching { include '**/*.class' }.each {
                        writer.println(it.name)
                    }
                } 
            }
        } 
    } 
} 

看一看。其功能之一是自动添加导入,包括
静态
导入和嵌套类的导入。它使用Maven、Gradle或Eclipse的.classpath文件自动搜索类文件。

现在Java IDE非常智能,使用任何其他东西都会浪费您的时间(因此间接地浪费金钱)

这与使用记事本而不是Word Till(或vim而不是LibreOffice)非常相似,直到您想要进行语法检查和嵌入图形等。当然,如果有足够的时间或精力,您可以这样做,但为什么要重新设计所有的轮子呢。早在2000年代早期,Emacs就有了一个非常可用的Java开发环境,当它问世时,它几乎立刻就被Eclipse淘汰了

例如,IntelliJ现在知道如何在一系列方法调用中显示当前点的类型(流调用非常频繁),这对以后阅读代码非常有帮助


所以,要得到您需要的东西,您需要一个IDE,它可以理解您的代码。如果您想充分利用vim的功能,是否考虑让IDE在源代码上启动vim?IntelliJ可以在不被告知的情况下获取文件系统中的更改。

很抱歉,将vim用作Java的IDE是没有意义的。使用真正的IDE,如Eclipse、IDEA IntelliJ或Netbeans,它们提供的不仅仅是简单地添加导入等功能……它与在任何其他语言中使用vim一样有意义。特别是自从语言服务器出现以来。所有的IDE在界面上都有很多膨胀,例如,没有提供有效的窗口导航。Intellij有不错的vim emulator,但它遗漏了一些重要功能,如评论、exchange和其他插件提供的功能。也许它对Java以外的其他语言有意义,但我有疑问,因为我使用过多种语言,如Go、Ruby等,IDE帮助并使许多事情变得快速和简单。windows导航是您需要在IDE中学习的一部分(学习键盘快捷键),也许您需要映射一些不同的按键以满足您自己的需要。你说的评论交流是什么样的功能?你说的是什么样的插件?除了导入之外:IntelliJ您只需在EclipseShift-Command-O等中使用Ctrl-Alt-O(用于导入)?是否可以将其修改为输出到stdout?第二种想法是,它不会显示此类中定义的任何函数,因此它不是很有帮助。不过还是谢谢你。哎呀!你的“所以这不是很有帮助”评论和否决票几乎同时发生,所以是的,我想是你。。。道歉。堆栈溢出不会让我们知道谁倒下了没有问题。然而,否决票很奇怪。你完全回答了我的问题!谢谢你的回答。它帮我弄明白了一些事情。如果需要类的整个路径,请使用以下命令:
writer.println(it.path)
从eclipse=)查看java语言服务器。我知道其他方法,如我所说。我在寻找类似于hoogle for java的东西。天哪,为什么要投反对票?问题是“不使用语言服务器”,我提供了一个不涉及语言服务器的解决方案。这个问题被标记为“gradle”、“maven”,我的解决方案可以同时使用这两个词。您还应该更具体地了解“Hoogle for Java”的含义。您想搜索的不仅仅是您项目的类路径吗?是否需要近似的解决方案(例如名称部分匹配)?您想要基于预期类型(而不是函数名)的解决方案吗?类路径和名称将是一个开始。如果连最基本的事情都做不到,那就没有必要澄清了。你猜怎么着,你展示的例子是我在intellij工作时不喜欢的事情之一。我已经提到过臃肿的界面和愚蠢地使用标签来表示打开的文件。语言服务器给了我所需要的一切智慧。当ITELLIJ能够重构<代码> null <代码> > <可选> <代码>时,我会考虑称之为“智能”。现在它所做的一切都是非常非常基本的。我真的建议按照您的愿望打开IDEA IntelliJ的问题。如果您发现IDEA非常基本,它将真正改善IDEA对您自己以及其他人的使用…@user1685095我可能低估了语言服务器的功能。就我个人而言,我非常喜欢vim,但在我看来,它并不是这份工作的合适工具(正如你已经发现的那样)。我同意告诉JetBrains你想要什么。据我所知,他们完全知道开发人员的需求是销售新许可证的关键,而您的需求似乎尚未得到满足。尽管如此,我仍然认为你将很难赶上其他人免费获得的东西,但如果你能让它发挥作用,这将是一个有趣的选择。就我个人而言,我对它能做些什么很感兴趣。他们花了5年左右的时间才增加了一个风投巨星的能力。我不会费心打开一个问题。使用语言服务器,我已经能够自动添加导入。如果可能的话,我只是想有其他选择。看起来java不是这样的。顺便说一句,我可以在vim中放置单独的行,甚至编辑索引,因为时间太长了。你认为他们需要多少时间来理解如果我